题目大意:

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. 1 visual studio code 配置C++开发环境 (windows 开发环境)

    0 引言 最近帮GF(不幸变成ex了)配置C++开发环境,一开始想给她装个visual studio13完事,但是一想到自己安装以及使用时的诸多麻烦,就有点退却,觉得没有这个必要.正好了解到vscod ...

  2. ionic-CSS:ionic 列表

    ylbtech-ionic-CSS:ionic 列表 1.返回顶部 1. ionic 列表 列表是一个应用广泛的界面元素,在所有移动app中几乎都会使用到. 列表可以是基本文字.按钮,开关,图标和缩略 ...

  3. SpringBoot通过maven打包成jar,设定主清单属性。

    文章目录 原来普通的jar包一直是 <build> <plugins> <plugin> <groupId>org.apache.maven.plugi ...

  4. HSE_VALUE 修改问题

    MDK的例程给的外部晶振是25Mhz,以24Mhz为例,介绍修改方法. ·1. 修改HSE_VALUE 在 “stm32f4xx.h" 搜索 ”HSE_VALUE" 会看到下面这句 ...

  5. POJ-1836-Alignment-双向LIS(最长上升子序列)(LIS+LSD)+dp

    In the army, a platoon is composed by n soldiers. During the morning inspection, the soldiers are al ...

  6. CodeForces 1152D Neko and Aki's Prank

    说明 Catalan(i) 表示卡特兰数的第 i 项. 题目链接:http://codeforces.com/problemset/problem/1152/C 题目大意 有 n 个左括号和 n 个右 ...

  7. sql 保存,性能高

    INSERT INTO TABLE( Id, Name) VALUES ( 4, 'A'), ( 5, 'P' ),( 6, 'U') ; INSERT INTO TABLE( Id, Name) S ...

  8. Word 多级节标题设置和图表章节号自动生成

    写文章的时候,正文.图表.节标题,通过“样式”可以进行统一设置,这里我记录了几点小技巧: 1.多级标题如何设置 假设我要设置三级标题,下面以图的形式记录方式: 设置完之后,应用即可. 章节设定之后,可 ...

  9. springcloud eureka server 检测 eureka client 状态

    import com.netflix.discovery.shared.Applications; import com.netflix.eureka.EurekaServerContextHolde ...

  10. Centos6 安装完之后,没有网络

    Virtualbox安装的centos 6.10的虚拟机,安装时,网络是NAT网络,安装完之后,将网络改为桥接网卡,启动虚拟机之后,使用 ifconfig 命令查看没有到eth0的信息,只有127.0 ...