题意: 有若干堆石子围成一圈儿, 每合并两堆石子, 就对答案贡献了这两堆石子的重量, 现询问答案的最大值与最小值.
>> face <<
状态: d p m i n [ l ] [ r ] → dpmin[l][r]\to dpmin[l][r]→该区间内的最小收益, d p m a x [ l ] [ r ] → dpmax[l][r]\to dpmax[l][r]→该区间内最大收益
目标: d p m i n [ 1 ] [ n ] & d p m a x [ 1 ] [ n ] dpmin[1][n] \& dpmax[1][n] dpmin[1][n]&dpmax[1][n]
边界: 第一次转移的贡献全由石堆提供. 不需要额外提供边界(记忆化搜索),针对区间最小,首先要memset(dpmin, ∞ \infty ∞, sizeof(dpmin)), 然后确保 d p m i n [ i ] [ i ] = 0 , i ∈ [ 1 , 2 ∗ n ] dpmin[i][i] = 0,i\in[1, 2*n] dpmin[i][i]=0,i∈[1,2∗n]
合法判断: 本题无
转移方程: 区间dp, 枚举未知, 让所有能转移到该未知的状态来转移
{ d p m i n [ l ] [ r ] = m i n ( d p m i n [ l ] [ r ] , d p m i n [ l ] [ k ] + d p m i n [ k + 1 ] [ r ] ) + ∑ i = l i ≤ r a [ i ] ; d p m a x [ l ] [ r ] = m a x ( d p m a x [ l ] [ r ] , d p m a x [ l ] [ k ] + d p m a x [ k + 1 ] [ r ] ) + ∑ i = l i ≤ r a [ i