区间 dp.
首先可以假定每个区间都对应了一头牛,没有给出的可以将其牛的重量看作 0 .
当某头牛要吃区间 $[l,r]$ 时,若剩下的派大于 $1$ ,可以先让其他牛吃到还剩一个,于是每头牛都恰好吃掉一个派.
设 $f(l,r)$ 表示把 $l,r$ 内的派吃完能获得的最大收益,转移时枚举最后被吃的派是 $k$ ,
$$
f(l,r)=\max_{l\le k\le r} f(l,k-1)+f(k+1,r)+g(l,r,k)
$$
其中 $g(l,r,k)=\max_{l\le x\le k\le y \le r} A_{x,y}$ ,表示用区间不超出 $[l,r]$ 的牛吃掉第 $k$ 个派能获得的最大收益.
转移时考虑 $[l,r]$ 这个区间的贡献就行了.
$$
g(l,r,k)=\max \lbrace A_{l,r},g(l+1,r,k),g(l,r-1,k) \rbrace
$$
时间复杂度 $O(n^3)$ .
1 | //%std |