Lilliput Steps

小さな一歩から着実に. 数学やプログラミングのことを書きます.

グラフ

AOJ 2382 - King Slime

問題文 : King Slime解いている人数が少ない問題はなんかドキドキする(小並)

JOI 春合宿 2014 Day2 - Making Friends is Fun

問題文 : 友だちをつくろう

AOJ 2170 - Marked Ancestor (ふたたび)

問題 : Marked Ancestor問題概要 : 大きさ$N$ の木が与えられる. 最初頂点$0$ は赤色で, その他の頂点は青色である. 次の$Q$ 個のクエリに答えよ :・頂点$v$ の色を赤色に変える. ・頂点$v$ から赤色の先祖ノードのうち, もっとも近いものの番号をこたえる.$…

IJPC #1 A - Innocent Animals and Destruction of Forests

問題文 : むこのどうぶつたち と しんりんのはかい

AOJ 0273 - Cats Going Straight II

解法 :双対グラフを作ってbfs すれば良い... が, グラフ構築バグりまくってます. 悲しい. (まだWA...) 朝にバグ取ります...コード : int main() { int N, M; while (scanf("%d %d", &N, &M) && N){ vector<Point> P(N); vector<int> to[128]; bool exist[128][128] = {0}</int></point>…

AOJ 2170 - Marked Ancestor

問題 : Marked Ancestor問題概要 : 大きさ$N$ の木が与えられる. 最初頂点$0$ は赤色で, その他の頂点は青色である. 次の$Q$ 個のクエリに答えよ :・頂点$v$ の色を赤色に変える. ・頂点$v$ から赤色の先祖ノードのうち, もっとも近いものの番号をこたえる.$…

ARC 008 C - THE☆たこ焼き祭り2012

問題文 : THE☆たこやき祭り2012

AOJ 0275 - Railroad

問題文 : 鉄道路線

Japan Alumni Group Spring Contest 2013 E - Minimum Spanning Tree

問題文 : Minimum Spanning Tree概要 : 無向重み付きグラフ$G(V, E)$ が与えられる. すべての$e \in E$ について, $G - e$ の最小全域木の重さを求めよ.$1 \leqq n \leqq 10^5$ (頂点数) $1 \leqq m \leqq 2 \times 10^5$ (辺数)

Codeforces 283C - World Eater Brothers

問題文 : World Eater Brothers問題概要 :$N$ 頂点からなる有向全域木$G$ が与えられる. 高々2 つの頂点を選んで, この頂点から他の頂点への有向パスが存在するようにするために変えなければならない辺の向きの最小値を求めよ.$N \leqq 3000$

橋と関節点, lowlink

lowlink という概念について説明しています. 実装は簡単ですが, いろいろと応用が効いて面白いです.

PCK 2011 本選 - 魔方陣

問題 : 魔方陣

AOJ 0247 - Arts and Crafts

問題文 : 図画工作解法 :$dp[i][j][k]$ : $i$ で表される道具の集合をを$j$ 日目に$k$ 個まで道具をかって実現することができるか, として事前にDP を行う.それで, 袋から完成状態へDP の結果をコストとする辺を貼り, 流量を$N$ とした最小費用流を行う.

AOJ 2457 - Adhoc Translation

問題文 : Adhoc Translation解法 : これがA 問題ってやべえなあ... 辞書に登録されている単語とネットで見た単語の間に, それぞれ編集距離をコストとした辺を張る. ネットで見た単語の数 ≦ 辞書に登録されている単語の数で, かならずネットで見た単語の数の…

AOJ 0237 - The Last Door

問題文 : 最後の扉解法 : つながる三角形を列挙したら, 強連結成分分解を行うだけ. JOI のAdvertisement という問題と全く一緒になります. 問題のつながる三角形の列挙ですが, 長方形と辺が重なる or 三角形の頂点が長方形にはいる or 長方形の頂点が三角形…

JOI 春合宿 2008-day1 Sheet

問題文 : 色紙解法 :各矩形のとりうる領域の最大値を計算し, その上にある別の色紙から自分に向かった辺をはったグラフを考える. このトポロジカル順序が答えとなる. 計算量は, 矩形の操作にO(NWH) 時間, トポロジカルソートにO(N) 時間で, 全体としてO(NWH)…

Croatia OI 2007 - policija

問題文 : POLICIJA問題概要 :無向連結グラフが与えられる. 以下のようなクエリに答えよ. 頂点 $u, v$ と辺 $e$ に対し, $e$ を取り除いたとき $u$ から $v$ へ辿り着けるか? 頂点 $u,\ v,\ w$ に対し, $w$ を取り除いたとき $u$ から $v$ へ辿り着けるか? …

JOI春合宿 2007-day2 SALT TREE XV

問題文 : SALT TREE XV解法 : (qnighy さんのものをチラッと見てしまったので, 考えながら書いた所をまとめる.)まず, ある状態から, 辺の数が0 で頂点の数が0 に出来れば自分の勝利であることを確認する. また, 辺の数が0 の状態への遷移は, 頂点が1 個の時…

JOI春合宿 2011-day2 shiritori

問題文 : しりとり解法 : 各辺を1 度だけ通るような探索をしてしまうと, 辺の数が多すぎるためうまく探索ができない. そこで, 00 ~ 99を頂点としたグラフを考え, その間に辺を貼ることを考える.このグラフがオイラーグラフであればしりとりをすることが可能…

APIO 2012-1 - Dispatching

問題文 : 忍者の派遣解法 : 各頂点でpriority queueを持ち, dfs を行い, 給料のコストが大きい頂点から予算を超える分だけqueueから取り除く.これだけではO(N * NlogN) = O(N^2 log N) の計算量となってしまうが, 頂点を併合する際に, 短い方のqueueを併合す…

SPOJ 913 - Query on a tree II

問題文 : Query on a tree II解法 :複数テストケースなので初期化する位置に気をつけないと死んでしまう問題 (ぼく死んでしまいました).距離を求めるところはeuler-tourっぽくやるのも, doubling でやるのもよしです. k 番目の頂点は, 根からの深さとlca(u, …

PKU 1986 - Distance Queries

問題文 : Distance Queries解法 : Highwayの, 渋滞情報変更が無いだけのSimple LCAの問題.(その前に最小全域木化しなければならないが) Euler-Tour をしたが, これはDoubling でも普通に解けそう.全体でO((N+K)logN) くらいの計算量となる. 何も見ないで書け…

JOI春合宿 2008-day3 Nightman

問題文 : 夜警解法 :登場する点のうち,・警備員のいる点 ・建物の点を頂点としたグラフを作る. この際に, 建物の辺または対角線と交わっている時は辺を貼らないようにする.これが出来れば, あとはダイクストラ法を各点に行うだけである.コード : #include <cstdio> #</cstdio>…

JOI春合宿 2011-day4 orienteering

問題文 : オリエンテーリング解法 : 同じ高さの点が無いので, 前もって標高順で, チェックポイントについてトポロジカルソートを行う. その後は全点対の最短経路をO(N^2logN)程度で求め, dp[i][j] : 1人目がチェックポイントi, 2人目がチェックポイントj に…

JOI春合宿 2011-day1 joitter

問題文 : ジョイッター解法 : (1) 1の人がいる場合 (2) 1の人がいなくて, 2, 3の人がいる場合 (3) 3の人だけの場合で場合分けをする.(1) 1の人がいる時は, その人と他の人を全員友達にしてあげれば, 最小の辺数を達成できる.(2) N人の人がいれば, ある人と皆…

IOI 2011-day2 Crocodile's Underground City

問題文 : ワニの地下都市(pdf注意)解法 : 出口につけばすぐに出ることが出来るので, 出口のノードのコストは0にしておく.そうでないすべてのノードについて, "出口までたどり着ける最短時間" "出口までたどり着ける2 番目の最短時間"を状態としてdijkstra を…

JOI春合宿 2009-day3 Ski

問題文 : スキー解法 : 全体の平均速度について2 分探索を行う. ある平均速度vを決めると, その平均速度でt 秒間高原を滑るとtv [m] 進むこととなる. 通った道のりの総和S と, 滑った時間の総和Tについて, S ≦ Tvを満たせば, その平均速度vで高原を滑り抜け…

AOJ 2269 - Traveling Salesman Problem

問題 : 巡回セールスマン問題解法 : 与えられたグラフは,(validなものであれば) 問題の制約通り, 有向木に辺をいくつか(最大501本)足したものとなる. また, 枝分かれや併合・子がある(となる)頂点が, 述べ 1000 個程度より多くあると, validなグラフが構成で…

AOJ 1505 - Dungeon

問題文 : Dungeon (I)解法 : クエリでの求める距離fs_iと, スタートからの最短路についてソートし, BITで数え上げを行うと O(N log N)時間でこの問題を解くことが出来る. クエリや最短路は, 数に対し範囲が大きいので座標圧縮を行うと管理が楽になると考えら…

JOI春合宿 2010-day4 highway

問題文 : 高速道路解法 : 次のように, 2つの木を考える. 辺の更新のクエリが来た時は, euler-tourを行った時に、それぞれの辺が上りだったか、下りだったかを覚えておき処理する.頂点uからvへ行くクエリが来た際は, u->lca(u, v)に行くときは逆辺の木, lca(u…