AtCoder Beginner Contest 269 G問題 Reversible Cards 2
問題
提出解答
問題の概要
枚のカードがある. 枚目の表には , 裏のカードには が書かれている. ここで, が成り立つ.
このとき, について以下の問に答えよ.
- 枚以上のカードを裏返すことによって, 見えている整数の和を にすることは可能か? 可能ならばその裏返すカードの最小枚数を答えよ.
制約
解法1
に対して, とする. また, とすると, この問題は次の問題に帰着される.
について以下の問に答えよ.
- から 個以上選び, その総和を にすることは可能か? 可能ならば選び出す整数の個数の最小値を求めよ.
これは愚直な動的計画法で解こうとすると, 時間かかり, 間に合わない.
解法2
ここで, 一般的に以下が成り立つ.
を非負整数列とし, その総和を とする. このとき, に出てくる整数の種類の数は 高々 である.
このとき, が成り立つので, よって, であるから, であるから, における の有無を考慮することにより, 高々 種類であることがわかった.(証明)
また, について,
であるから, における正部分, 負部分それぞれについて考えることによって, に出てくる整数の種類の数は高々 であり, 種類となることがわかった.
において, において 種類の整数が登場し, 整数 が 個登場するとする. このとき, 考える問題は次のようにして帰着できる.
次のようなスコアとコストのペアがある. なお, スコア とコスト のペアを と書くことにする.
次のような動的計画法で解くことができる.
- 初期条件: は のとき , のときは
- 更新式: 番目のペアを としたとき.
この動的計画法によって, ペアの個数を としたとき, が答えである.
ここで, ペアの個数について, であるから, に出てくる整数の種類の数が であることも合わせて, である.
よって, の範囲を答えることになっていおり, の制約から, 全体の計算量を 時間で求めることができた.