JOI '18 予選:4 - 水ようかん
問題
解法
「dp(i, j) := 左端から i 個までを切った後のピースの長さが j 以上になるようにうまく切った時の答え」で DP を立てる.DP の漸化式は,
dp(i, j) = min( max( dp(k, j), (区間 (k + 1) ~ i の長さ) - j ) )
となるので,(区間 (k + 1) ~ i の長さ) が j 以上となるような全ての k について計算し,それらの min をとったものをその DP での答えにすればよい.j は,
0 <= j <= (水ようかん全体の長さ - 1)
と定義される定数.なので DP の引数に置いておく必要はなさそう(外で変数として持っておけばよいので).O(maxL * N^2).
解答
j の決め方に問題があり,1 WA してしまった.最大値と最小値の差の最小値などを求める問題では,最小値を固定するなど片方を固定すれば DP の見通しがかなり良くなると感じた.