H - Count Multiset Editorial by satashun


dp[\(i\)][\(j\)] := \(1\) 以上の整数 \(i\) 個で和が \(j\) になるような場合の数,ただし同じ整数を \(M\) 個以下しか使ってはならない とします.

\(1\) の個数で場合分けします.\(1\)\(k\) 個 (\(0 \leq k \leq M\)) あるとき,\(2\) 以上を \(1\) ずつひいて場合の数はdp[\(i-k\)][\(j-i\)] です.\(i-k\) の範囲は連続しているので,累積和を計算しつつ更新していくと \(\mathrm{O}(NM)\) で答えが求まります.

posted:
last update: