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

ABC295D - Three Days Ago

解法1: 考え方 回答例 解法1:考え方各数字(0〜9)の出現回数偶奇性が$l -1$と$r$で一致する場合に「嬉しい列」となる. よって,bitで$i$文字目までの0〜9の出現回数の偶奇性だけを抑えておく.回答例$l - 1 = 0$の場合をd[0] = 1として考える. from col…

ABC293D - Tying Rope

考え方1 考え方2 考え方1閉路ができたかどうかをUnionFind木で見る(閉路検出 - 競プロはじめました). N, M = map(int, input().split()) # --- UnionFind --- p = [-1] * (N + 1) def root(x): if p[x] < 0: return x p[x] = root(p[x]) return p[x] def …

ABC293C - Make Takahashi Happy

考え方 回答例 考え方全通りの経路を再帰でみていけば良い.回答例 H, W = map(int, input().split()) A = [list(map(int, input().split())) for _ in range(H)] def f(x, y, seen): global ans if x == H - 1 and y == W - 1: ans += 1 return if x + 1 < …

ABC292E - Transitivity

考え方 回答例 考え方アライグマ「E問題は、要するに「直接辺で繋がってないけど移動できる頂点の組の個数」を求める問題で、「移動できる頂点の組-辺の個数」なのだ! 全部の頂点からDFSすれば求められるのだ!」— 競技プログラミングをするフレンズ (@kyo…

ABC292D - Unicyclic Components

考え方 回答例 考え方UnionFind木(UnionFind木 - 競プロはじめました)で辺で結ばれる頂点をマージする.辺の数は,UnionFind木の親に対応付けて管理する.回答例 N, M = map(int, input().split()) E = [] for _ in range(M): u, v = map(int, input().spl…

ABC292C - Four Variables

考え方 回答例 考え方$1\leq n \leq N$を満たす$n$の約数はそれぞれ$O(\sqrt{n})$で求められる(Pythonで蟻本2-6 - 数学的な問題を解くコツ - 競プロはじめました).よって,$1\leq n \leq N$なるすべての$n$に対して約数を調べる計算量は$O(N\sqrt{N})$で…