区间 dpdpdp 的套路:设 f[i][j]f[i][j]f[i][j] 为区间释放 i ji~ji j 号囚犯所需最少的肉(注意,i,ji,ji,j 不是牢房编号,是释放的囚犯编号,也就是下面的 a[i]a[i]a[i] 数组)
枚举区间的分界点k,转移方程为:
把后面这一坨拿出来拆开看看,
,这个不必解释
a[j+1]−a[i−1]−1a[j+1]-a[i-1]-1a[j+1]−a[i−1]−1 就是第 j+1j+1j+1 个要放出的囚犯到第 i−1i-1i−1 个要放出的囚犯之间的人数,也就是要发的肉的数量;
最后一个 −1-1−1 是什么呢,就是第 kkk 个放出去的囚犯,不用给他吃肉了(不给肉吃还出去干嘛)
附上优美的代码: