mini notes

競技プログラミングの解法メモを残していきます。

yukicoder No.458 異なる素数の和 (★2.5)

問題:No.458 異なる素数の和 - yukicoder

解答:#483584 (C++14) No.458 異なる素数の和 - yukicoder

解法:20000までの素数のリストを作成する。20000までの素数の個数は2262個。

dp[i][j] : i番目の素数までを使い、残りの数がjであるときのこれまで使った素数の個数の最大値 としてdpする。 dpの遷移は、i番目の素数を使わなかった場合はdp[i+1][j] = dp[i][j]となる。i番目の素数を使う場合はdp[i+1][j-p] = dp[i][j] + 1となる。