题意简述
给定一个序列,和一个常数 m m m,要你把这个序列分成几个连续的部分,每一个部分的和都不能超过 m m m,然后让你最小化每一段的最小值的和。
数据
输入
8 17
2 2 2 8 1 8 2 1
输出
12
解释
222 ∣ 818 ∣ 21 2 2 2 | 8 1 8 | 2 1 222∣818∣21
这样划分使得最小值的和最小 = 2 + 8 + 2 = 12 =2+8+2=12 =2+8+2=12
思路
上来就 d p dp dp。
d p [ i ] dp[i] dp[i]表示考虑到 i i i位置的最优答案,那么 d p [ i ] = d p [ j ] + m a x ( a [ j + 1 ] , a [ j + 2 ] ⋯ a [ i ] ) dp[i]=dp[j]+max(a[j+1],a[j+2]\cdots a[i])