2020年5月24日日曜日

パ研コンペティション3日目 E - 美しい和音

f(i,x):=A1,...,Aif(i, x) := A_1, ..., A_iを使って作れる総和xxの美しい和音の総数、とする。ffの漸化式はAiA_iを使う/使わないの二択の和でf(i,x)=f(i1,x)+f(i2,xAi)f(i, x) = f(i-1, x) + f(i-2, x-A_i)と書ける。これでDPすれば部分点が取れる。

また、DPのほとんどの枝で不可能な状態の遷移をしていることに注目すると高速化できる。例えば、A1,...,AiA_1, ..., A_iから作れる美しい和音の最大スコアg(i)g(i)がDPで求まるので、これを事前に求めておいて、g(i)g(i)xxより小さくなったら枝刈りしてよい。これで満点が取れた。


でも、計算量がよくわからない。