競技プログラミング日記

主に AtCoder の記事です

2023-08-01から1ヶ月間の記事一覧

AtCoder Beginner Contest 188F

ABC188F 操作の逆を考える. \(f(y) := y / 2 \ (\text{if}\ y \equiv 0 \ mod \ 2)\), \(g_{+}(y) := y + 1\), \(g_{-}(y) := y - 1\). これらの操作で \(Y\) から \(X\) を作ることを考える. 操作 \(f\) のおかげで,小さくしていくので計算量の見積りも…

AtCoder Beginner Contest 187E

ABC190E Tree におけるクエリ. まとめて処理することで回数を減らす,いつものやつ. Subtree に関する処理を,補題の様に扱えばよい. Subtree の root \(r\) を指定したとき,\(r\) の値を subtree 全体に伝搬させる. 使っている記号,マクロ等 "https:/…

AtCoder Beginner Contest 190E

ABC190E グラフの問題. ハミルトン閉路に近い. 大事な頂点が \(K \leq 17\) と少ない. 訪れた頂点を再び使う可能性はある. すべての大事な頂点を 1回以上使う. 訪れた頂点の集合と,最後に訪れた頂点を保持しながら dp. 大事な頂点間のコストは,BFS と…

AtCoder Beginner Contest 191E

ABC191E ダイクストラ. サイクルを含んでいるので注意. サイクルだけ別に管理してしまうと楽. 始点を \(s \in N\) とする良い path を考えると, [\(s \rightarrow s\) のループを使う path] または, [\(s \rightarrow i \rightarrow s\) かつ \(i \neq …

AtCoder Beginner Contest 192E

ABC192E コストが特殊な Dijikstra. 時刻を距離の代わりとして保持しておき, 時刻が \(k\) の倍数になるまで待機してから移動すればよい. 現時点の後ろの,一番近い \(k\) の倍数で移動するのが最善. 使っている記号,マクロ等 "https://ecsmtlir.hatenab…