$Problem’s \ Website$
$Solution$
这道题可以用记忆化搜索,比较好理解,于是我就不说了。。。
我们来说一下$dp$的做法。
很明确,我们可以将每一行分开处理,而且处理的点只带两端,明显的区间$dp$。
我们设$f[i][j]$为当前区间变为$i,\ j$时的最大得分。
每次取数时,至于$i\ -\ 1$和$j\ +\ 1$有关,次数我们可以推出来为$m-j+i-1$
状态转移方程还是比较好推的。
对于每一行
$for\ i\ 1-m$
$for\ j\ m - i$
$ f[i][j]\ = \max(f[i - 1][j] + a[i - 1][j] \times 2^{n-j+i-1}, f[i][j+1]+a[i][j+1] \times 2^{n-j+i-1});$
最后只剩下一个数时
$f[i][i] = \max(f[i][i]+a[i][i] \times 2^m);$
对于每一行的$f[i][i]$取$\max$,最后答案为$\sum\limits_{i=1}^{n}{\max_{j=1}^{m}(f[j][j] + a[j][j] \times 2^m)}$
最后,温馨提示:本题要用高精度
$Code$
1 |
|
$rp++$