きろく

特筆すべき記録のまとめ

JOI '18 予選:4 - 水ようかん

問題

beta.atcoder.jp

解法

「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).

解答

beta.atcoder.jp

j の決め方に問題があり,1 WA してしまった.最大値と最小値の差の最小値などを求める問題では,最小値を固定するなど片方を固定すれば DP の見通しがかなり良くなると感じた.

f:id:babcs2035:20181205001005p:plain