第7回日本情報オリンピック 本選(オンライン):C - ダーツ
問題
https://www.ioi-jp.org/joi/2007/2008-ho-prob_and_sol/2008-ho.pdf
から重複を許して 点選び、それが合計得点 となる。ただし が を超えた場合は となる。合計得点の最大値を求めよ。
制約
考え方
「複数変数あるときに、ある つを全探索して他をいい感じに求める」というテクを使う。 で 点から 点を選ぶ組み合わせを求めておく。その中から 点を選ぶ。という方針で解が求める。
選ぶ 点をそれぞれ とする。 を選んだときに、 となるような最大の は が定まれば なる最大の である。これは二分探索で で求めることができるので、全体の計算量は となる。
Submission #3872426 - 第7回日本情報オリンピック 本選(オンライン)
どこに着目して考察するべきだったか
全探索の枝刈りしか思いつくことができなかった。 では合計値の候補が多すぎて解を求めることができなかった。
点から 点に集約する。 点に集約した後、 点を全探索して、もう片方は二分探索なりで求めることが分かれば解くことができる。
何がバグっていたか
得た知見
- 複数変数のうち、ある つを固定する
- 程度のときに で候補を求める