博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1006 传纸条【dp】
阅读量:5270 次
发布时间:2019-06-14

本文共 1558 字,大约阅读时间需要 5 分钟。

题目

题意:

给定一个m*n的矩阵,从(1,1)向下或向右走到(m,n)之后向上或向左走回(1,1),要求路径中每个点都不重复。

问使得权值和最大的路径的权值是多少。

思路:

这道题要学会把问题转化成,找两条从(1,1)到(m, n)互不相交的路径。因为过去和回来其实是相对的。

如果用一个四维dp,dp[i][j][k][l]表示从(1,1)到(i,j)的路径和从(1,1)到(k,l)的路径,他们互不相交的最大权值和。

分别枚举i,j,k,l, dp[i][j][k][l] = max(dp[i][j-1][k-1][l], dp[i-1][j][k-1][l], dp[i-1][j][k][l-1], dp[i][j-1][k][l-1])+g[i][j]+g[k][l]

当(i,j)==(k,l)时,这个点的权值只能算一次。

我们可以发现他走的方向规定之后,代表步数是一定的。因此我们可以缩减一维。

dp[step][i][j]就表示用step步,走到第i行和第j行时的两条互不相交路径的最大权值和。

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 13 #define inf 0x7fffffff14 using namespace std;15 typedef long long LL;16 typedef pair
pr;17 18 int n, m;19 const int maxn = 55;20 int heart[maxn][maxn];21 int dp[maxn * 2][maxn][maxn];22 23 int main()24 {25 scanf("%d%d", &m, &n);26 for(int i = 1; i <= m; i++){27 for(int j = 1; j <= n; j++){28 scanf("%d", &heart[i][j]);29 }30 }31 32 for(int step = 1; step <= n + m - 1; step++){33 for(int i = 1; i <= m; i++){34 for(int j = 1; j <= m; j++){35 if(step - i + 1 < 1 || step - j + 1 < 1)continue;36 dp[step][i][j] = max(max(dp[step - 1][i][j], dp[step - 1][i - 1][j]), max(dp[step - 1][i][j - 1], dp[step - 1][i - 1][j - 1])) + heart[i][step - i + 1] + heart[j][step - j + 1];37 if(i == j){38 dp[step][i][j] -= heart[i][step - i + 1];39 }40 }41 }42 }43 44 printf("%d\n", dp[n + m - 1][m][m]);45 46 return 0; 47 }

 

转载于:https://www.cnblogs.com/wyboooo/p/10832215.html

你可能感兴趣的文章
windows下面安装Python和pip终极教程
查看>>
Hadoop基本概念
查看>>
java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
查看>>
JavaScript高级程序设计(四): 关键字With的使用
查看>>
浅说 apache setenvif_module模块
查看>>
MySQL--数据插入
查看>>
判断一个元素有没有条件
查看>>
[JLOI2011]飞行路线 (分层图,最短路)
查看>>
重新学习python系列(二)? WTF?
查看>>
android开发常用地址
查看>>
SSH框架整合配置所需JAR包(SSH整合)
查看>>
如何安装windows7
查看>>
[主席树]HDOJ4348 To the moon
查看>>
shell脚本统计文件中单词的个数
查看>>
SPCE061A学习笔记
查看>>
sql 函数
查看>>
hdu 2807 The Shortest Path 矩阵
查看>>
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>
JavaScript 变量
查看>>
java实用类
查看>>