前面事情太多了,所以搁了很多的题没做

  • 第一个不容易想的点就是这两条路是不会重叠的,所以可以转化成两条都从原点出发不相交的路径
  • 第二点就是该如何去表示这两种路径,第一种是用四维数组存位置(这里非法解的递推不会影响到正解)
  • 第二种用3维数组存每条路径只需要一个纵坐标或者横坐标就行
  • 最后一点不好想的就是两条路径的长度一样,在去重的时候其实j>=i,相等的时候就是重叠的时候

    从这道题中可以知道dp表示路径的方法(利用横纵坐标的和),和八皇后的解法有异曲同工之处

    四维解法
#include<iostream>
#include<utility>
using namespace std;
typedef long long ll;
#define fi(i,a,b) for(int i = a; i <= b; ++i)
#define fr(i,a,b) for(int i = a; i >= b; --i)
#define x first
#define y second
#define sz(x) ((int)(x).size())
#define pb push_back
using pii = pair<int,int>;
int n,m;
//#define DEBUG
int page[55][55];
int dp[55][55][55][55];
int max1(int a,int b,int c,int d){
return max(max(a,b),max(c,d));
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
fi(i,1,n) fi(j,1,m) cin >> page[i][j];
fi(i,1,n) fi(j,1,m) fi(k,1,n) fi(l,j+1,m) dp[i][j][k][l] = max1(dp[i-1][j][k-1][l],dp[i-1][j][k][l-1],dp[i][j-1][k-1][l],dp[i][j-1][k][l-1]) + page[i][j] + page[k][l];
cout << dp[n][m-1][n-1][m] << endl;
#ifdef DEBUG
//freopen(D:\in.txt,r,stdin);
#endif
return 0;
}

三维解法

#include<iostream>
#include<utility>
using namespace std;
typedef long long ll;
#define fi(i,a,b) for(int i = a; i <= b; ++i)
#define fr(i,a,b) for(int i = a; i >= b; --i)
#define x first
#define y second
#define sz(x) ((int)(x).size())
#define pb push_back
using pii = pair<int,int>;
//#define DEBUG
int dp[150][55][55];
int page[55][55];
int max1(int x,int y,int a,int b){
return max(max(x,y),max(a,b));
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n,m;
cin >> n >> m;
fi(i,1,n) fi(j,1,m) cin >> page[i][j];
fi(k,1,n+m) fi(i,1,m) fi(j,1,m) dp[k][i][j] = -1;
dp[2][1][1] = 0;
fi(k,3,n+m) fi(i,1,m-1) fi(j,i+1,m) {
dp[k][i][j] = max1(dp[k-1][i-1][j],dp[k-1][i][j],dp[k-1][i-1][j-1],dp[k-1][i][j-1]);
if(dp[k][i][j] == -1) continue;
dp[k][i][j] += page[k-i][i] + page[k-j][j];
} cout << dp[n+m-1][m-1][m] << endl;
#ifdef DEBUG
//freopen(D:\in.txt,r,stdin);
#endif
return 0;
}

P1006的更多相关文章

  1. 【洛谷】【动态规划(多维)】P1006 传纸条

    [题目描述:] 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸 ...

  2. 【题解】洛谷P1006传纸条

    链接 https://www.luogu.org/problemnew/show/P1006 日常牢骚 过年前最后一节课上完了坐标DP 也接触了一点区间DP(noi1995石子合并)下次做做看看吧 老 ...

  3. NOIP 2008 传纸条(洛谷P1006,动态规划递推,滚动数组)

    题目链接:P1006 传纸条 PS:伤心,又想不出来,看了大神的题解 AC代码: #include<bits/stdc++.h> #define ll long long using na ...

  4. 棋盘DP三连——洛谷 P1004 方格取数 &&洛谷 P1006 传纸条 &&Codevs 2853 方格游戏

    P1004 方格取数 题目描述 设有N $\times N$N×N的方格图(N $\le 9$)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字00.如下图所示(见样例): A ...

  5. 洛谷 P1006 传纸条 题解

    P1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法 ...

  6. 洛谷P1006 传纸条【dp】

    题目:https://www.luogu.org/problemnew/show/P1006 题意: 给定一个m*n的矩阵,从(1,1)向下或向右走到(m,n)之后向上或向左走回(1,1),要求路径中 ...

  7. P1006 传纸条 /// DP+滚动数组

    题目大意: https://www.luogu.org/problemnew/show/P1006 题解 不难想到 求从起点到终点的两条不同的路 因为只能向右或向下走 所以纸条1和2不可能同时位于同一 ...

  8. 洛谷P1006 NOIP提高组2008 传纸条

    P1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无 ...

  9. 洛谷p1006 传纸条 三维解法

    原题目如下 原地址https://www.luogu.com.cn/problem/P1006 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做 ...

  10. P1006 传纸条(二维、三维dp)

    P1006 传纸条 输入输出样例 输入 #1 复制 3 3 0 3 9 2 8 5 5 7 0 输出 #1 复制 34 说明/提示 [限制] 对于 30% 的数据,1≤m,n≤10: 对于 100% ...

随机推荐

  1. Spring Cloud 部署时如何使用 Kubernetes 作为注册中心和配置中心

    一.Spring Cloud 支持的常见注册中心和配置中心. Spring Cloud 自带的注册中心Eureka以及config配置中心 Nacos,支持注册中心和配置中心等,可以参考:https: ...

  2. 【题解】[NOIP2001 普及组] 装箱问题

    [NOIP2001 普及组] 装箱问题 这是一道动态规划题. 那就先定义状态吧(这里用的是一维滚动数组). \(f[j]\) 代表当我有 \(j\) 这么多容量可以用时,能装的最大重量是多少. 好,状 ...

  3. 同时添加多个的远程桌面工具,Windows远程桌面设置多用户同时登录

    Windows Server 版本上的 Windows 远程桌面服务 (RDS) 允许多个用户同时登录. 但是,在标准的Windows桌面版本(例如Windows 10)上,默认情况下,远程桌面是为单 ...

  4. Windows远程连接工具有哪些

    Windows远程连接工具,一般称为远程桌面软件,更准确的叫远程访问软件或远程控制软件,可以让你从一台电脑远程控制另一台电脑.远程桌面软件允许您控制连接的计算机,就好像它就在您面前一样. 远程桌面工具 ...

  5. 4G EPS 的架构模型

    目录 文章目录 目录 前文列表 EPS 的架构 EPS 的架构模型 E-UTRAN UE eNodeB EPC MME(移动性管理) SGW(本地移动性锚点) PGW(业务锚点) HSS(用户认证及鉴 ...

  6. C#利用win32API创建窗体

    效果图 代码实现 1 using System; 2 using System.Runtime.InteropServices; 3 //using System.Windows.Forms; 4 5 ...

  7. Java RMI遇到的Connection refused to Host: 127.x.x.x/192.x.x.x/10.x.x.x问题解决方法

    问题故障解决记录 -- Java RMI Connection refused to host: x.x.x.x .... 在学习JavaRMI时,我遇到了以下情况 问题原因:可能大家的host是10 ...

  8. CentOS搭建Jellyfin影音服务器

    一. 安装Jellyfin 之前介绍过Docker安装jellyfin,但Docker安装方式存在一些限制,于是一起学习一下用RPM包在CentOS 7下安装方法. 先安装需要的依赖: yum ins ...

  9. LeetCode 146. LRU CacheLRU缓存机制 (C++/Java)

    题目: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...

  10. 使用edge浏览器时,怎么让alt+tab不切换他的子标签页而只在程序间切换?

    使用搜索按钮(WIN+Q),搜索"多任务设置",在弹出的窗口中看到"alt+tab"相关设置.选择"仅打开的窗口",ok搞定.