其他分享
首页 > 其他分享> > 洛谷 P1005 动态规划

洛谷 P1005 动态规划

作者:互联网

Problem Description

帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n \times mn×m的矩阵,矩阵中的每个元素a_{i,j}a
i,j
均为非负整数。游戏规则如下:
每次取数时须从每行各取走一个元素,共nn个。经过mm次后取完矩阵内所有元素;
每次取走的各个元素只能是该元素所在行的行首或行尾;
每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元素值\times 2^i×2
i
,其中ii表示第ii次取数(从11开始编号);
游戏结束总得分为mm次取数得分之和。
帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。

Input

输入文件包括n+1n+1行:
第11行为两个用空格隔开的整数nn和mm。
第2\backsim n+12∽n+1行为n \times mn×m矩阵,其中每行有mm个用单个空格隔开的非负整数。

Output

输出文件仅包含11行,为一个整数,即输入矩阵取数后的最大得分。

Sample Input

2 3
1 2 3
3 4 2

Sample Output

82

Analysis of ideas

k=m-(R-L),可以得到状态转移方程:f[L][R]=max(num[L]*p[k]+dp(L+1,R),dp(L,R-1)+num[R]*p[k])

for(int len=0;len<=m;++len)
        for(int i=1;i+len<=m;++i)
            f[i][i+len]=max(2*f[i+1][i+len]+2*a[i],2*f[i][i+len-1]+2*a[i+len]);

Accepted code

标签:得分,元素,洛谷,mm,P1005,矩阵,取数,每行,动态
来源: https://www.cnblogs.com/hezongdnf/p/11987239.html