题目描述
设有N * N的方格图(N< =10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。
某人从图的左上角的A 点(1,1)出发,可以向下行走,也可以向右走,直到到达右下角的B点(N,N)。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。
此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。
输入
输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独的0表示输入结束。
输出
只需输出一个整数,表示2条路径上取得的最大的和。
样例输入
8
2 3 13
2 6 6
3 5 7
4 4 14
5 2 21
5 6 4
6 3 15
7 2 14
0 0 0
样例输出
67
思路:一开始想的就是走两次,每一次都尽量取最大的,这么走,但是这样不对,为什么呢?如图所示(自动补齐):

如果按照一开始的想法来的话,第一次我们选的是2 3 3 4 4 4;第二次就是3了。这样两次一共是23.但是如果第一次取2 3 3 2 4 ,第二次取3 4 4 的话,这样就可以全取了,最终答案是25 ,这样是最优的。
也就是说我们不能将两次路程分开来计算,而是要一起走。假设有两个人一同从(1,1)走,最终到达(n,n)。开一个四维的dp数组(我们可以发现n最大只有10,数据量很小),记忆化搜索找出最优答案就可以了。
代码如下:

#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxx=13;
int dp[maxx][maxx][maxx][maxx];
int mp[maxx][maxx];
int n;inline void init()
{memset(dp,-1,sizeof(dp));memset(mp,0,sizeof(mp));
}
inline int dfs(int i,int j,int x,int y)
{if(i>n||j>n||x>n||y>n) return 0;if(dp[i][j][x][y]!=-1) return dp[i][j][x][y];int sum=0;sum+=mp[i][j]+mp[x][y];sum+=max(max(dfs(i+1,j,x+1,y),dfs(i+1,j,x,y+1)),max(dfs(i,j+1,x+1,y),dfs(i,j+1,x,y+1)));if(i==x&&j==y) sum-=mp[x][y];return dp[i][j][x][y]=sum;
}
int main()
{scanf("%d",&n);init();int x,y,z;while(cin>>x>>y>>z,x||y||z) mp[x][y]=z;cout<<dfs(1,1,1,1)<<endl;return 0;
}

努力加油a啊,(o)/~

[蓝桥杯][算法训练VIP]方格取数(双线程dp)相关推荐

  1. [蓝桥杯][算法训练VIP]麦森数(Java大数+快速幂)

    题目描述 形如2p-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2p-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有9 ...

  2. [蓝桥杯][算法训练VIP]摆动序列(深搜+回溯||动态规划)

    题目描述 如果一个序列满足下面的性质,我们就将它称为摆动序列: 序列中的所有数都是不大于k的正整数: 序列中至少有两个数. 序列中的数两两不相等: 如果第i – 1个数比第i – 2个数大,则第i个数 ...

  3. [蓝桥杯][算法训练VIP]旅行家的预算(单调栈+贪心)

    题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市 到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P ...

  4. [蓝桥杯][算法训练VIP]王、后传说(深搜+回溯)

    题目描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横.坚.斜线位置. 看过清宫戏的中国人都知道,后宫乃步步惊心的险恶之地.各皇后都有自己的势力范围,但也总能找到相安无事的办 ...

  5. [蓝桥杯][算法训练VIP]乘积最大(动态规划)

    题目描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一 ...

  6. [蓝桥杯][算法提高VIP]五次方数-枚举

    题目描述 对一个数十进制表示时的每一位数字乘五次方再求和,会得到一个数的五次方数 例如:1024的五次方数为1+0+32+1024=1057 有这样一些神奇的数,它的五次方数就是它自己,而且这样的数竟 ...

  7. 黑色星期五c语言程序,[蓝桥杯][算法训练VIP]黑色星期五 (C语言代码)

    解题思路: 输入年份是已知的,既然1998年1月1日是星期四,随后的某年某月某日是星期几,可用函数来计算.首先需要知道,从1998年到某年,过了多少年,每过一年要加上366天(闰年)或365天:然后是 ...

  8. [蓝桥杯][算法训练VIP]接水问题(思维)

    题目描述 学校里有一个水房,水房里一共装有m个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1.现在有n名同学准备接水,他们的初始接水顺序已经确定.将这些同学按接水顺序从1到n编号,i号同学的 ...

  9. [蓝桥杯][算法训练VIP]单词接龙(DFS+String)

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都 最多在"龙&quo ...

最新文章

  1. node 升级_技术周刊( Node.js 12 性能大提升 2019-04-30)
  2. 软件工程与项目管理的关系_软件工程:软件工程概述13个问题解答?
  3. 【Linux】Linux基本命令(一)
  4. linux下使用cmake构建C/C++项目
  5. php 去除图片黑边,C#_c#扫描图片去黑边(扫描仪去黑边),自动去除图像扫描黑边复制代 - phpStudy...
  6. BZOJ1298:[SCOI2009]骰子的学问
  7. jenkins关闭和重启
  8. 真假难辨,AI就能分得清?
  9. 思科vrf配置实例_从原理到配置,最全的VLAN说明就在这了!
  10. 超赞!设计师完全自学指南
  11. vega56刷64_vega56刷vega64_vega56和1070ti_vega56功耗-太平洋电脑网
  12. 智能制造-从愿景到实现路径
  13. arcgis在配合数据驱动下制作动态表格及生成拐点坐标表
  14. 万字综述:如何打造自动驾驶的数据闭环?
  15. 论文翻译:2021_MetricGAN+: An Improved Version of MetricGAN for Speech Enhancement
  16. shell的正向和反向
  17. 构词法重新辨析triweekly与entrance
  18. c语言实验报告中致谢词,实验报告致谢词范文
  19. 年度指南-Web网页开发学习总纲-2023修订版
  20. linux运维之批量升级

热门文章

  1. c语言将程序写为动态库,VS下生成C程序静态库(LIB)及动态库(DLL)的方法
  2. 树莓派上传数据到onenet云平台
  3. java ftp主动模式和被动模式_ftp主动模式和被动模式
  4. c语言memcopy_C语言中memcpy 函数的用法详解
  5. osg图元绑定方式总结
  6. Android开发之星期天数的实现与日期转星期几
  7. c语言作业题五六章答案,C语言程序设计五六章习题和课堂测试答案.doc
  8. 锁定计算机的mad命令,本次操作由于这台计算机的限制而被取消
  9. 计算机模拟 博弈 善意,从两本奇书看人与人的重复博弈
  10. php ftp rmdir,PHP中的ftp_rmdir()函数