競技プログラミング日記

主に AtCoder の記事です

2023-07-23から1日間の記事一覧

AtCoder Beginner Contest 194E

ABC194E Mex を求めるアルゴリズムまずは問題を保留して,vector \(a\) が与えられたとき,\(mex(a)\) を求める手順を考える. 小さい自然数から実験してみれば,\(i \in \mathbb{N}\) に対して, \(mex(a) = i\) となるのは,任意の\(j \in i\) に対して \(…

AtCoder Beginner Contest 311B

ABC311B まず \(N = 1\) の場合を考える. vector \(v\) に対して何個 o が連続しているかは, for i in v.size() を回して,\(v[i]\) が o だったら カウント \(cnt\) を増やして,そうで無ければ \(cnt\) を 0 に戻す. \(i\) ごとに chmax(ans, cnt) を行…

AtCoder Beginner Contest 311C

ABC311C すべての頂点から \(1\) 本ずつ辺が出ているので, どの頂点から始めてもサイクルにたどり着く. サイクルの検出は,訪れた頂点を記録しておいて, すでに訪れた頂点に再び来たときにサイクルがあると分かる. 使っている記号,マクロ等 "https://ec…

AtCoder Beginner Contest 311D

ABC311 D BFS で求まる. 訪れたマスを記録しておいて,1回しか調べないことにする. ただし,通過したマスと止まったマスは区別する. 遷移するとき,ぶつかるまで一気に進むので while 文で実装する. 使っている記号,マクロ等 "https://ecsmtlir.hatenab…

AtCoder Beginner Contest 311E

ABC311E \(H, W \leq 3,000\) であるから,\(O(HW)\) は間に合う. 升目を全探索できるので,その上で穴の無い正方形を高速に数える. 升目 \(\,(x,y)\,\) を固定したとき,\( (x,y) \) を左上とする正方形のうち, 穴の無いものを数えたい. これは単調性が…