部分和問題(N個の配列から和がKになるように選ぶ)とその解き方
部分和問題とは、\(N\) 個の数 \( a_1, a_2, …, a_n\) が与えられたとき、その中からいくつかを選んで和をちょうど \(K\) にできるか判定をする問題です。
例えば配列が で、\(K\ ...
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 ...
ビットDP(bit DP)の考え方 ~集合に対する動的計画法~
競技プログラミングで良く使われる動的計画法の1種、「ビットDP」と呼ばれるものについてまとめました。
ビットDPとはビットDP(bit DP) とは、ビットで表現した集合を添え字に持つ動的計画法(DP)のことです。 ...
[AtCoder] ABC155 E – Payment (500点)
問題へのリンク
問題概要\(1, 10, 10^2, 10^3, \dots, 10^{(10^{100})}\) の紙幣で金銭のやり取りをする。
N 円払う時、支払うのに使う紙幣の枚数と、お釣りでもらう紙幣の ...
桁DP(Digit DP) を考え方から問題例まで徹底解説!
競技プログラミングで良く用いられる動的計画法の1つ「桁DP」について解説します。
桁DPとは桁ごとに分けて考える動的計画法です。
「1からNまでの整数について、条件を満たす数はいくつあるか?」「1からNまでの ...
[AtCoder] ABC154 E – Almost Everywhere Zero (500点)
問題へのリンク
問題概要1 以上 N 以下の整数で、0 でない数字がちょうど K 個あるものの個数を求めよ。
制約\begin{align}
&1 \leq N \leq 10^{100} \\ ...