AtCoderチャレンジ供養会場(2020/02/01-2020/02/07)
コンテストでの時間切れや解けなかった過去問を振り返って供養していく
2/1: AtCoder Regular Contest 074 F - Lotus Leaves
Difficulty: 2205 (記事作成時点) 最小カットに帰着する方法と、 間の局所点連結度を求める方法がある 計算量は最小カットのグラフの辺の数が 、フロー増加パスの長さが 、最大フローが次数で抑えられるので 、局所点連結度を求める方法が、各頂点の次数が に抑えられることから最短パスを求めるBFSを で実施でき、局所点連結度も次数で抑えられるので 供養
問題
解法
解法1: 最小カット
S
のとき、 に対応する点から行 、列 それぞれに対応する点へ容量 の辺を張るT
のとき、行 、列 それぞれに対応する点から に対応する点へ容量 の辺を張るo
のとき、 に対応する点から行 、列 それぞれに対応する点へ双方向に容量 の辺を張る.
のとき、何もしない-1
を出力し、そうでなければ を出力する解法2: 局所点連結度
.
ならば 、それ以外ならば とする
S
であるような と T
であるような が直接結ばれている場合は -1
を出力して終了
躓いた点
2/2: AtCoder Grand Contest 022 C - Remainder Game
Difficulty: 2209 (記事作成時点) 計算量は の最大値を として、到達性の判定に 、全体で 供養
問題
解法
-1
を出力して終了
躓いた点
2/3: Tenka1 Programmer Beginner Contest 2019 D - Three Colors
2/4: AtCoder Grand Contest 017 D - Game on Tree
Difficulty: 2233 (記事作成時点) 部分木のGrundy数について、以下の証明を行う: 実装は単純 計算量は 供養
問題
解法
点 を根とする木 のGrundy数を としたとき、 を部分木に持ち、 を唯一の子とするような点 を根とする木 のGrundy数 は
の頂点数 に関する帰納法を用いる
basis: のとき、 かつ により成立
inductive step: の任意の木について成り立つと仮定する。 の木 から を構成し、 から任意の辺を除いて作られる を含む部分木は、 のみもしくは の部分木 に を根として加えたものである。ここで、 のみの部分木のGrundy数は0、 の部分木のGrundy数は仮定より となる。Grundy数の定義よりGrundy数が となるような の部分木が存在するので、 の部分木は のGrundy数をとることができることから、 となり成立躓いた点
2/5: CODE FESTIVAL 2016 qual C D - Friction
Difficulty: 2242 (記事作成時点) 実装は 計算量は1回あたりの前計算とDPが で、各列間繰り返すので 供養
問題
解法
躓いた点
2/6: AtCoder Regular Contest 097 E - Sorted and Sorted
Difficulty: 2246 (記事作成時点) 記述の簡単のため、黒の小さいものから 番目のボールのことを 、白の小さいものから 番目のボールのことを とする 計算量は 供養
問題
解法
躓いた点
2/7: AtCoder Grand Contest 015 C - Nuske vs Phantom Thnook
Difficulty: 2254 (記事作成時点) 青マス同士の隣接関係を辺としてグラフを作ると森になるので、連結成分の数は青マスの数から辺の数を引いたものであるから二次元累積和で求められる 計算量は前処理に 、各クエリが定数時間なので 供養
問題
解法
躓いた点