久々にPKU記をつけることにしました
JOI予選で満点がとれなかったのでPKUを年内に100問解く決意をしたのですが、解法の復習はやはり勉強になるということで記録をつけます。
12月13日
1. PKU 1406
先に和を全部列挙しておいて二分探索とかで探す。二分探索じゃなくても間に合いそうだけど。
2. PKU 1505
二分探索で最小の和を求めて、後ろからgreedyに分割していく。
3. PKU 1598
文字列処理。やるだけ。
4. PKU 1591
配列処理。やるだけ。
5. PKU 1707
Wolfram Alphaの力を借りて解埋め込みました本当にごめんなさい。
12月14日
6. PKU 1037
DP+探索。
まず、 dp[d][n][i][j] を、「板の数があとn枚あって、次に来るべき板が最後の板より高いときd == 0、そうでないときd == 1で、最後の板より高い板があとi枚、低い板があとj枚残っているときに、あと何とおりの冊ができるか」を表すものとしてDP。
で計算できる。
後はそれを使って普通に探索してC番目の冊を求める。
7. PKU 1715
探索するだけ。
8. PKU 1717
DP。
dp[n][s]を、「1〜nまでのドミノを使って、上の列の和 - 下の列の和 = s とすることができるなら、そうするために必要な回転の最小数、できないなら∞」としてDP。
9. PKU 2018
二分探索。
10. PKU 2139
Floyd
11. PKU 2138
文字列を長さ別にまとめて、最初のやつから到達できるかどうか長さ順に判定していく。
12. PKU 2137
DP。
1番目の牛の場所をs番目に固定して、dp[i][j]を、「i番目の牛の場所がj番目のとき、最初の牛からそこに到達するまでの最短距離」としてDP。これを全てのsについて行う。
13. PKU 2136
やるだけ。
15. PKU 1264
凸包 + 点の内外判定 + 多角形の面積