mini notes

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

yukicoder No.949 飲酒プログラミングコンテスト(★3)

問題:No.949 飲酒プログラミングコンテスト - yukicoder

解答:#479694 (C++14) No.949 飲酒プログラミングコンテスト - yukicoder

解答:K問解けたとする決め打ちの二分探索。
もしK問解いたとすると、Dを昇順ソートしてK, K-1, K-2, ..., 1番目の問題から順に解いていったことになる。
この順に解けるような飲酒順があるかどうかをdpにより確認する。
dp[i][j]:現在i問目、kooさんの飲酒量がjの時にi問目の問題を解けるかの真偽値、とする。
遷移は dp[i+1][j+1] = (dp[i][j] || dp[i][j+1]) && (d[k-i-1] <= a[i-j] + b[j+1]) である。