f(i,x):=A1,...,Aiを使って作れる総和xの美しい和音の総数、とする。fの漸化式はAiを使う/使わないの二択の和でf(i,x)=f(i−1,x)+f(i−2,x−Ai)と書ける。これでDPすれば部分点が取れる。
また、DPのほとんどの枝で不可能な状態の遷移をしていることに注目すると高速化できる。例えば、A1,...,Aiから作れる美しい和音の最大スコアg(i)がDPで求まるので、これを事前に求めておいて、g(i)がxより小さくなったら枝刈りしてよい。これで満点が取れた。
でも、計算量がよくわからない。