题目描述
小渊和小轩是好朋友也是同班同学, 他们在一起总有谈不完的话题. 一次素质拓展活动中, 班上同学安排做成一个 mm 行 nn 列的矩阵, 而小渊和小轩被安排在矩阵对角线的两端, 因此, 他们就无法直接交谈了. 幸运的是, 他们可以通过传纸条来进行交流. 纸条要经由许多同学传到对方手里, 小渊坐在矩阵的左上角, 坐标 (1,1(1,1), 小轩坐在矩阵的右下角, 坐标 (m,n)(m,n). 从小渊传到小轩的纸条只可以向下或者向右传递, 从小轩传给小渊的纸条只可以向上或者向左传递.
在活动进行中, 小渊希望给小轩传递一张纸条, 同时希望小轩给他回复. 班里每个同学都可以帮他们传递, 但只会帮他们一次, 也就是说如果此人在小渊递给小轩纸条的时候帮忙, 那么在小轩递给小渊的时候就不会再帮忙. 反之亦然.
还有一件事情需要注意, 全班每个同学愿意帮忙的好感度有高有低 (注意: 小渊和小轩的好心程度没有定义, 输入时用 00 表示), 可以用一个 0-1000−100 的自然数来表示, 数越大表示越好心. 小渊和小轩希望尽可能找好心程度高的同学来帮忙传纸条, 即找到来回两条传递路径, 使得这 22 条路径上同学的好心程度之和最大. 现在, 请你帮助小渊和小轩找到这样的 22 条路径.
输入输出格式
输入格式:
输入文件, 第一行有 22 个用空格隔开的整数 mm 和 nn, 表示班里有 mm 行 nn 列.
接下来的 mm 行是一个 m \times nm*n 的矩阵, 矩阵中第 ii 行 jj 列的整数表示坐在第 ii 行 jj 列的学生的好心程度. 每行的 nn 个整数之间用空格隔开.
输出格式:
输出文件共一行, 包含一个整数, 表示来回 22 条路上参与传递纸条的学生的好心程度之和的最大值.
输入输出样例
输入样例 #1: 复制
- 3 3
- 0 3 9
- 2 8 5
- 5 7 0
输出样例 #1: 复制
34
思路: 水题
f[i][j][k][l] 表示一条路走到 (i,j), 另一条路走到 (k,l), 取到的最大的数.
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<iostream>
- #include<string>
- #include<vector>
- #include<stack>
- #include<bitset>
- #include<cstdlib>
- #include<cmath>
- #include<set>
- #include<list>
- #include<deque>
- #include<map>
- #include<queue>
- #define ll long long int
- using namespace std;
- inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
- inline ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
- int moth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
- int dir[3][2]={-1,0,-1,-1,-1,1};
- int dirs[8][2]={1,0 ,0,1 ,-1,0 ,0,-1, -1,-1 ,-1,1 ,1,-1 ,1,1};
- const int inf=0x3f3f3f3f;
- const ll mod=1e7+9;
- int m,n;
- int G[100][100];
- int dp[55][55][55][55];
- int main(){
- iOS::sync_with_stdio(false);
- cin>>m>>n;
- for(int i=1;i<=m;i++)
- for(int j=1;j<=n;j++)
- cin>>G[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++){
- dp[i][j][k][l]=max(max(dp[i-1][j][k-1][l],dp[i-1][j][k][l-1]),
- max(dp[i][j-1][k-1][l],dp[i][j-1][k][l-1]))+G[i][j]+G[k][l];
- if(i==k&&j==l) dp[i][j][k][l]-=G[i][j]; // 减去重复的部分
- }
- cout<<dp[m][n][m][n]<<endl;
- return 0;
- }
来源: http://www.bubuko.com/infodetail-3034990.html