Luogu 1006 传纸条

Posted PushinL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu 1006 传纸条相关的知识,希望对你有一定的参考价值。

多维动态规划里面的题orz

简化问题为从一个方向传两张纸条 所以用四维数组。

状态转移方程:

\(f[i][j][k][l]=max(f[i-1][j][k-1][l],f[i][j-1][k-1][l],f[i-1][j][k][l-1],f[i][j-1][k][l-1])+map[i][j]+map[k][l]\)

#include<iostream>
#include<cstdio>
using namespace std;
int m,n,x,y,val,f[51][51][51][51],map[51][51];
int main(){
    scanf("%d%d",&m,&n);
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
            scanf("%d",&map[i][j]);
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
            for(int k=1;k<=m;k++)
                for(int l=1;l<=n;l++){
                    f[i][j][k][l]=max(f[i-1][j][k-1][l],max(f[i][j-1][k-1][l],max(f[i-1][j][k][l-1],f[i][j-1][k][l-1])))+map[i][j]+map[k][l];
                    if(i==k&&j==l)f[i][j][k][l]-=map[i][j];
                }
    printf("%d\n",f[m][n][m][n]);
    return 0;
}

以上是关于Luogu 1006 传纸条的主要内容,如果未能解决你的问题,请参考以下文章

luogu 1006 传纸条

[Luogu P1006]传纸条 (网格DP)

Luogu1006 传纸条 与 Luogu P2045方格取数加强版 (费用流)

luogu 1006 noip2008 传纸条

洛谷 P1006 传纸条 题解

P1006 传纸条