luogu 1006 传纸条
三/四维dp,将两次传递均看作从左上而来,在dp过程中注意防止越界/重合
f[i][j][k][l]直接枚举两轮的点,如下
- #include<bits/stdc++.h>
- #define rep(i,x,y) for(register int i=x;i<=y;i++)
- const int N=;
- using namespace std;
- int f[N][N][N][N],mp[N][N],m,n;
- int MAX(int a,int b,int c,int d){
- int m1=max(a,b),m2=max(c,d);
- int m3=max(m1,m2);
- if(m3==a) return a;
- if(m3==b) return b;
- if(m3==c) return c;
- if(m3==d) return d;
- }
- int main(){
- scanf("%d%d",&m,&n);
- rep(i,,m)rep(j,,n) scanf("%d",&mp[i][j]);
- rep(i,,m)rep(j,,n)rep(k,,m)rep(l,j+,n)
- f[i][j][k][l]=mp[i][j]+mp[k][l]+MAX(f[i][j-][k][l-],f[i][j-][k-][l],f[i-][j][k][l-],f[i-][j][k-][l]);
- printf("%d\n",f[m][n-][m-][n]);
- return ;
- }
但空间时间并不优秀,利用i+j=k+l=step的特性减少一维,分别只枚举i.k再计算另一维即可
- #include<bits/stdc++.h>
- #define rep(i,x,y) for(register int i=x;i<=y;i++)
- const int N=;
- using namespace std;
- int f[N<<][N][N],mp[N][N],m,n;
- int MAX(int a,int b,int c,int d){
- int m1=max(a,b),m2=max(c,d);
- int m3=max(m1,m2);
- if(m3==a) return a;
- if(m3==b) return b;
- if(m3==c) return c;
- if(m3==d) return d;
- }
- int main(){
- scanf("%d%d",&m,&n);
- rep(i,,m)rep(j,,n) scanf("%d",&mp[i][j]);
- rep(k,,m+n-)rep(i,,m)rep(j,,m){
- if(k-i<||k-j<) continue;
- f[k][i][j]=mp[i][k-i+]+mp[j][k-j+]+MAX(f[k-][i][j],f[k-][i][j-],f[k-][i-][j],f[k-][i-][j-]);
- if(i==j) f[k][i][j]-=mp[i][k-i+];
- }printf("%d\n",f[m+n-][n][n]);
- return ;
- }
还有滚动数组可以降至二维,但不会写...emmm
luogu 1006 传纸条的更多相关文章
- Luogu 1006 传纸条 / NOIP 2008 传纸条(动态规划)
Luogu 1006 传纸条 / NOIP 2008 传纸条(动态规划) Description 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m ...
- [Luogu P1006]传纸条 (网格DP)
题面 传送门:https://www.luogu.org/problemnew/show/P1006 Solution 挺显然但需要一定理解的网络(应该是那么叫吧)DP 首先有一个显然但重要的结论要发 ...
- 【暑假集训】HZOI2019 Luogu P1006 传纸条 二三四维解法
写三次丢失两次,我谔谔,以后再不在博客园先保存我就去死 题目内容 洛谷链接 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学被安排坐成一个\(m\)行.\(n\ ...
- LuoGu P1006 传纸条
题目传送门 这题嘛...方格取数和这题一样一样的 只不过这题是从左上到右下再回去罢了(来回一趟和来两趟有区别么?没有,那么这题和上题用一样的转移和状态就行了 没什么好说的,说一下我的错误好了: 人家图 ...
- 洛谷p1006 传纸条 三维解法
原题目如下 原地址https://www.luogu.com.cn/problem/P1006 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做 ...
- tyvj1011 传纸条
背景 NOIP2008复赛提高组第三题 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端, ...
- NOIP2008 传纸条
题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是 ...
- NOIP2008传纸条[DP]
题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是 ...
- NOIP2008 T3 传纸条 解题报告——S.B.S.
题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是 ...
随机推荐
- ubuntu软件安装位置
有时候需要配置ubuntu安装的软件,一般安装软件都是使用apt-get install.那么安装完后,软件的安装目录在哪里呢,可执行文件又放在哪里呢. A.下载的软件的存放位置:/var/cache ...
- python学习笔记九——序列
4.4 序列 序列是具有索引和切片能力的集合.元组.列表和字符串具有通过索引访问某个具体的值,或通过切片返回一段切片的能力,因此元组.列表和字符串都属于序列.序列索引功能演示: tuple=(&quo ...
- node 和npm 版本更新
node 版本更新 由于公司要用NG-ZORRO,于是我就跑到官网先看看demo,怎么构建项目,执行的过程中发现了问题 问题描述 执行官网构建项目命令 安装脚手架工具# $ npm install - ...
- delphi的一个公用函数库
delphi的一个公用函数库 {********************************************** *** Name: PublicFunc; *** Author: l ...
- pgm12
作为 inference 部分的小结,我们这里对 machine learning 里面常见的三个 model 的 inference 问题进行整理,当然很幸运的是他们都存在 tractable 的算 ...
- BZOJ1497[NOI2006]最大获利——最大权闭合子图
题目描述 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成 ...
- C# 枚举值 (二) 多属性 操作
很多时候,我们的枚举值可能需要中英文, 那么可以使用下面的方法: 下面这个类,包含2部分. 1 BaseDescriptionAttribute特性的重载 2 枚举的操作类 EnumOperate n ...
- aop 记录用户操作(一)
转载: http://www.cnblogs.com/guokai870510826/p/5981015.html 使用标签来设置需要的记录 实例:@ISystemLog() @Controller ...
- 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表 1. Actions表 ...
- 【BZOJ2299】[HAOI2011]向量(数论)
[BZOJ2299][HAOI2011]向量(数论) 题面 BZOJ 洛谷 题解 首先如果我们的向量的系数假装可以是负数,那么不难发现真正有用的向量只有\(4\)个,我们把它列出来.\((a,b)(a ...