グラフにおける関節点(Articulation Points)を検出するアルゴリズム
連結グラフにおける関節点(切断点)とは、「グラフから取り除くと、グラフが非連結になってしまうような頂点」のことを言います。
※「連結」とは任意の2頂点間を行き来できることを言い、「非連結」は逆に行き来できない頂点があること ...
桁DP(Digit DP) を考え方から問題例まで徹底解説!
競技プログラミングで良く用いられる動的計画法の1つ「桁DP」について解説します。
桁DPとは桁ごとに分けて考える動的計画法です。
「1からNまでの整数について、条件を満たす数はいくつあるか?」「1からNまでの ...
[AtCoder] ABC154 F – Many Many Paths (600点)
問題へのリンク
問題概要2次元の平面上で、以下のように関数 f(r,c) を定義する。
f(r,c) := (0,0)から(r,c)までの経路の個数
この時、以下を計算せよ。ただし、\(10^9+7 ...
[AtCoder] ABC154 E – Almost Everywhere Zero (500点)
問題へのリンク
問題概要1 以上 N 以下の整数で、0 でない数字がちょうど K 個あるものの個数を求めよ。
制約\begin{align}
&1 \leq N \leq 10^{100} \\ ...
[AtCoder] ABC136 E – Max GCD (500点)
問題へのリンク
問題概要N 個の整数列 \(A_1, A_2, \cdots, A_N\) に、以下の操作をK回まで行う。これら全てはある数の倍数となるが、その数の最大値を求めよ。
操作:\(A_1, A_2, ...
[AtCoder] ABC139 E – League (500点)
問題へのリンク
問題概要N人の選手がいる。各選手は1日1試合のみできる。総当たり戦を行う時、最短で何日かかるか?
ただし、i 番目の選手は \(A_{i, 1}, A_{i, 2}, \ldots, A_{i, ...
[AtCoder] ABC152 F – Tree and Constraints (600点)
問題へのリンク
問題概要N頂点の木がある。辺を白か黒で塗るとき、以下のような制約をM個満たすような塗り方は何通りか?
制約 i:頂点 \(u_i\) と頂点 \(v_i\) を繋ぐパス上に、黒く塗られた辺が1つ ...
動的計画法(Dynamic Programming)入門
動的計画法(Dynamic Programming)とは、小さい部分問題を計算して記録しておき、より大きい問題を計算する際に利用する手法のことです。
以下のような特徴がありますが、抽象的なのでここではざっと眺 ...
[AtCoder] ABC152 D – Handstand 2 (400点)
問題へのリンク
問題N以下の整数の組(A, B)について、Aの先頭とBの末尾の数が等しく、Aの末尾とBの先頭の数が等しいのは何通りあるか?
制約$$1\leq N \leq 2 \times 10^5$$
貪欲なアルゴリズム(greedy)入門
貪欲なアルゴリズムとは以下のような性質を持つアルゴリズムのことを言います。
その場での最善の手を選ぶことを繰り返す貪欲法を用いたアルゴリズムは、実装が簡単な上に応用範囲が広いので非常に重要です。
大まか ...