E – Roadwork 解説(AtCoder Beginner Contest 128)
問題へのリンク
問題概要 N 回の通行止めがあり、 Q 人の人ははじめ座標 0 に立っている。
\(i\) 番目の道路工事は時刻&n ...
半分全列挙による全探索の高速化
N 個の要素の組み合わせを計算する際、N/2 ずつの2グループに分けてそれぞれを全列挙し、組み合わせ方を高速に求めるという工夫を「半分全列挙」と言います。
選択した数列の合計値を半分全列挙で探索する場合(\(2^4\)ずつに分け ...木の直径を求めるアルゴリズム
木に存在する2つノード間の最大距離を木の直径と言います。
重み無しの木でも、重み付きの木でも、木の最遠頂点間の距離が直径になります。
重み無しの木の例:
以下は直径が5となる木の例で
組み合わせゲーム理論の基礎とGrundy数での勝敗判定アルゴリズム
競技プログラミングなどで頻出のテーマである組み合わせゲームやGrundy数についてまとめました。
前半は全ての方に向けての内容で、プログラム例や競技プログラミング特有の話題については後半にあります。
組み合わせゲーム ...N – Slimes 解説 (Educational DP Contest / DP まとめコンテスト)
問題へのリンク
問題概要N 個の数列 \({a_1, a_2, a_3, \cdots, a_N\}\) があり、以下の操作を数列の要素数が 1 になるまで繰り返す。
隣り合う2つ \(a, b\) を選んで取り除き ...区間DP の考え方と使える状況まとめ
競技プログラミングで良く使われる動的計画法の1種、「区間DP」と呼ばれるものについてまとめました。
区間DPとは区間DPとは、区間を表す添え字を持つ動的計画法(DP)のことです。
基本的には、以下のような DP ...
L – Deque 解説 (Educational DP Contest / DP まとめコンテスト)
問題へのリンク
問題概要数列 \(a = a_1, a_2, \ldots, a_N \) がある。二人で以下の操作を交互に行う。
a の先頭要素または末尾要素を取り除く。 取り除いた要素を x& ...K – Stones 解説 (Educational DP Contest / DP まとめコンテスト)
問題へのリンク
問題概要二人で以下のゲームを行う。先手と後手のどちらが勝つか?
以下の操作を交互に行うA = \( a_1, a_2, \ldots, a_N\) の元 x を一つ選び、K 個の山から丁度 x 個取り ...A – コンテスト 解説 (Typical DP Contest)
問題へのリンク
問題概要N 問の問題があるコンテストがあり、i 問目の問題の配点は pi 点である。合計得点は何通り考えられるか?
制約1 ≤ N ≤ 1001 ≤ p ...
E – Divisible Substring 解説(AtCoder Beginner Contest 158)
問題概要
\(2 \leq P \leq 10000\ ...
長さ N の数 S が与えられる。
素数 P で割り切れるような区間の選び方は何通りあるか?
\(2 \leq P \leq 10000\ ...