mini notes

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

ABC118 D - Match Matching

問題:D - Match Matching

Python解答:Submission #16067781 - AtCoder Beginner Contest 118

Python解法:dp[i]:残りマッチ棒がi本の時に作れる最大の数字 として配るDPをする。dp[0]が答え。

C++解答:Submission #16083490 - AtCoder Beginner Contest 118

C++解法:先にdp[i]:マッチ棒i本を使って出来る数字の桁数の最大値 というDPをする。
その後、dp[n]から逆に見てゆき、マッチ棒の数字の大きい方から貪欲に遷移できるところに遷移して文字列を復元してゆく。
dp[i] == dp[j] + 1 の場合、iからjに遷移することができる。