题目大意:

https://www.luogu.org/problemnew/show/P1006

题解

不难想到 求从起点到终点的两条不同的路

因为只能向右或向下走 所以纸条1和2不可能同时位于同一行

dp[ i ][ j ][ k ]为 第 i 步时1位于 j 行2位于 k 行(这里为1~n行1~m列)

当知道步数 i 和所在行数 j 时,列数就为 i - j + 1

若同时位于同一行 即 j==k

再次走到同一个位置

则2到该位置时好感已被消耗

if( j==k ) dp[ p ][ j ][ k ] += a[ j ][ i-j+1 ];  所以此处只加一个

else dp[ p ][ j ][ k ] += a[ j ][ i-j+1 ]+a[ k ][ i-k+1 ];

这种状态必然会比其他状态 好感值低

则求max()时 自然会将这种情况筛选掉

#include <bits/stdc++.h>
using namespace std;
/// dp[i][j][k] 当走到第i步 纸条1位于j行 2位于k行[j][k] 时的最大好感值
/// 则可以从第i-1步时为 [j][k] [j][k-1] [j-1][k] [j-1][k-1] 四种情况转移而来
int main()
{
int n,m,dp[][][],a[][];
while(~scanf("%d%d",&n,&m)) {
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&a[i][j]);
memset(dp,,sizeof(dp));
dp[][][]=a[][];
for(int i=;i<n+m;i++)
for(int j=;j<=n && j<=i;j++)
for(int k=;k<=n && k<=i;k++) {
int p=i%;
dp[p][j][k]=max(max(dp[!p][j][k],dp[!p][j-][k]),
max(dp[!p][j][k-],dp[!p][j-][k-]));
if(j==k) dp[p][j][k]+=a[j][i-j+]; // j==k说明同步在同一个位置
else dp[p][j][k]+=a[j][i-j+]+a[k][i-k+];
}
printf("%d\n",dp[(n+m-)%][n][n]);
} return ;
}

P1006 传纸条 /// DP+滚动数组的更多相关文章

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

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

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

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

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

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

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

    题面 传送门:https://www.luogu.org/problemnew/show/P1006 Solution 挺显然但需要一定理解的网络(应该是那么叫吧)DP 首先有一个显然但重要的结论要发 ...

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

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

  6. 洛谷 P1006 传纸条 题解

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

  7. HDU 1024 Max Sum Plus Plus --- dp+滚动数组

    HDU 1024 题目大意:给定m和n以及n个数,求n个数的m个连续子系列的最大值,要求子序列不想交. 解题思路:<1>动态规划,定义状态dp[i][j]表示序列前j个数的i段子序列的值, ...

  8. POJ 3666 Making the Grade (DP滚动数组)

    题意:农夫约翰想修一条尽量平缓的路,路的每一段海拔是A[i],修理后是B[i],花费|A[i] – B[i]|,求最小花费.(数据有问题,代码只是单调递增的情况) #include <stdio ...

  9. HDU 5119 Happy Matt Friends (背包DP + 滚动数组)

    题目链接:HDU 5119 Problem Description Matt has N friends. They are playing a game together. Each of Matt ...

随机推荐

  1. delphi 键盘常用参数(PC端和手机端 安卓/IOS)

    常数名称(红色手机端) 十六进制值 十进制值 对应按键(手机端) Delphi编程表示(字符串型)_tzlin注 0 0 大键盘Delete键 #0 VK_LBUTTON 1 1 鼠标的左键 #1 V ...

  2. 移动端图片轮播效果:depth模式总结

    最近公司app改版首页增加了一处轮播图效果,但是跟普通的轮播效果不同,是类似于下图的样式,找了一些兼容移动端的插件以及jQuery源码,总结一下使用心得: 1:jquery源码:缺点是在手机端的滑动很 ...

  3. docker快速安装elasticsearch

    一.选择版本,拉取镜像 docker pull elasticsearch:5.6.9 #不选择版本就是最新的 二.运行设置容器 # -d 表示在后台运行 docker run -d -p 9200: ...

  4. post请求传文件

    public static JSONObject doFormDataPost(File file, String sURL) throws IOException { HttpClient cont ...

  5. getmapping等无法解析

    版本要改一下,4.1.6没有<dependency> <groupId>org.springframework</groupId> <artifactId&g ...

  6. React:styled-components

    ``是es6的Template Literals(模版字符串),许多人对这个一知半解,今天在这边总结下: `${expression}`(表达式插补) var x; var y; sth.innerH ...

  7. Spring MVC @PathVariable注解(3)

    下面用代码来演示@PathVariable传参方式 1 @RequestMapping("/user/{id}") 2 public String test(@PathVariab ...

  8. iOS进阶五-RunLoop

    简介 RunLoop 运行循环.跑圈 RunLoop的作用主要体现在三方面: 1.保持程序持续运行 2.处理App中的各种事件(比如触摸事件.定时器事件.Selector事件) 3.节省CPU资源,提 ...

  9. arm-linux-copydump 的使用

    生成可以执行的 2 进制代码 [arm@localhost gcc]#arm­linux­copydump ­O binary hello hello.bin

  10. 随笔记录 linux命令 2019.7.29

    系统命令 一. type   查看命令是内部命令还是内部命令 help   帮助 man   在线帮助 cd      切换目录 pwd    查看所在路径 stat     查看文件详细信息 ls  ...