nyoj 探寻宝藏
探 寻 宝 藏
- 描述
- 
传说HMH大沙漠中有一个M*N迷宫,里面藏有许多宝物。某天,Dr.Kong找到了迷宫的地图,他发现迷宫内处处有宝物,最珍贵的宝物就藏在右下角,迷宫的进出口在左上角。当然,迷宫中的通路不是平坦的,到处都是陷阱。Dr.Kong决定让他的机器人卡多去探险。 但机器人卡多从左上角走到右下角时,只会向下走或者向右走。从右下角往回走到左上角时,只会向上走或者向左走,而且卡多不走回头路。(即:一个点最多经过一次)。当然卡多顺手也拿走沿路的每个宝物。 Dr.Kong希望他的机器人卡多尽量多地带出宝物。请你编写程序,帮助Dr.Kong计算一下,卡多最多能带出多少宝物。 - 输入
- 第一行: K 表示有多少组测试数据。 
 接下来对每组测试数据:
 第1行: M N
 第2~M+1行: Ai1 Ai2 ……AiN (i=1,…..,m)【约束条件】 
 2≤k≤5 1≤M, N≤50 0≤Aij≤100 (i=1,….,M; j=1,…,N)
 所有数据都是整数。 数据之间有一个空格。
- 输出
- 对于每组测试数据,输出一行:机器人卡多携带出最多价值的宝物数
- 样例输入
- 
2 2 3 0 10 10 10 10 80 3 3 0 3 9 2 8 5 5 7 100 
- 样例输出
- 
120 134 
 #include <iostream> 
 #include <cstring>
 #include <cmath>
 using namespace std;int main() 
 {
 int n;
 cin>>n;
 while(n--)
 {
 int a[60][60];
 int m,n;
 cin>>m>>n;
 for(int i=1;i<=m;i++)
 for(int j=1;j<=n;j++)
 cin>>a[i][j];int step=m+n-2; 
 int dp[120][60][60];
 memset(dp,0,sizeof(dp));
 for(int s=1;s<step;s++)
 for(int i=1;i<=m;i++)
 {
 for(int j=i+1;j<=m;j++)
 {
 if(s+2>=i&&s+2>=j) //判断坐标是否越界。+2是因为求步数的时候-2
 dp[s][i][j]=max(max(dp[s-1][i-1][j],dp[s-1][i-1][j-1]),
 max(dp[s-1][i][j],dp[s-1][i][j-1]))+a[i][s-i+2]+a[j][s-j+2];
 }
 }
 cout<<max(dp[step-1][m-1][m],dp[step-1][m][m-1])+a[m][n]<<endl;
 }
 return 0;
 }思路: 本题的题意是:一个人从左上到右下,再到左上,两次的路线不同,求两次之和的宝藏数最大 则可以变更为两人同时从左上到右下,路线不同。 A(x,y) B(i,j) 则 x+y=i+j; 两人走的总步数相同,从左上到右下step=m+n-2;。坐标从1,1开始 果两个人不走相同的路 那么这两个人必须不在相同的列或者行 i表示第一个人所在的行坐标,j表示第二个人所在的列坐标。 
nyoj 探寻宝藏的更多相关文章
- 探寻宝藏(双向DP)
		题目描述 传说HMH大沙漠中有一个M*N迷宫,里面藏有许多宝物.某天,Dr.Kong找到了迷宫的地图,他发现迷宫内处处有宝物,最珍贵的宝物就藏在右下角,迷宫的进出口在左上角.当然,迷宫中的通路不是平坦 ... 
- NYOJ-712 探寻宝藏(第六届河南省程序设计大赛)
		探 寻 宝 藏 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 传说HMH大沙漠中有一个M*N迷宫,里面藏有许多宝物.某天,Dr.Kong找到了迷宫的地图,他发现迷宫 ... 
- ny712 探寻宝藏 ny61 传纸条(1)
		探 寻 宝 藏 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 传说HMH大沙漠中有一个M*N迷宫,里面藏有许多宝物.某天,Dr.Kong找到了迷宫的地图,他发现迷宫内处 ... 
- 探寻宝藏   ---   双线DP
		双线DP , 在郑轻的时候 做过 这种双线DP , 这是多维DP 应该是比较简单的 但是那个 时间复杂度的优化 始终看不懂 . 先附上代码吧 , 等看懂了再来 , 补充一下 解释 . #in ... 
- [SimpleOJ238]宝藏探寻
		题目大意: 给你一棵带点权的n个结点的树,有m次询问,每次从树上删掉一条路径(u,v),问删掉每条路径后各个连通块权值和的平方之和. 每次询问是独立的. 思路: 首先对树遍历一遍求出每棵子树的权值和. ... 
- NYOJ 1007
		在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ... 
- NYOJ 998
		这道题是欧拉函数的使用,这里简要介绍下欧拉函数. 欧拉函数定义为:对于正整数n,欧拉函数是指不超过n且与n互质的正整数的个数. 欧拉函数的性质:1.设n = p1a1p2a2p3a3p4a4...pk ... 
- 探寻 JavaScript 逻辑运算符(与、或)的真谛
		十二月已经过半,冬季是一个美妙的季节,寒冷的空气逼得人们不得不躲在安逸舒适的环境里生活.冬季会给人一种安静祥和的氛围,让人沉浸在其中,仿佛是一个旧的阶段的结束,同时也是一个新的阶段的开始.这么说来,西 ... 
- NYOJ 333
		http://www.cppblog.com/RyanWang/archive/2009/07/19/90512.aspx?opt=admin 欧拉函数 E(x)表示比x小的且与x互质的正整数的个数. ... 
随机推荐
- Please, another Queries on Array? CodeForces - 1114F (线段树,欧拉函数)
			这题刚开始看成求区间$\phi$和了........先说一下区间和的做法吧...... 就是说将题目的操作2改为求$(\sum\limits_{i=l}^{r}\phi(a[i]))\%P$ 首先要知 ... 
- UVA-1322 Minimizing Maximizer (DP+线段树优化)
			题目大意:给一个长度为n的区间,m条线段序列,找出这个序列的一个最短子序列,使得区间完全被覆盖. 题目分析:这道题不难想,定义状态dp(i)表示用前 i 条线段覆盖区间1~第 i 线段的右端点需要的最 ... 
- python 小练习12
			给你一个整数数列a1,a2,a3,...,an,请你修改(不能删除,只能修改)最少的数字,使得数列严格单调递增. 数列存储在列表L中,你可以直接使用L,L的长度小于100000. 注意:必须保证修改后 ... 
- 3n+1问题中的几个小的注意点
			3038 3n+1问题 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 3n+1问题是一个简单有趣而又没有 ... 
- OAF系统更新默认LOGO图标和主页环境描述
			更新EBS OAF系统中默认的LOGO图标和主页的环境描述 左上角的ORACLE图片位置在 登录界面左上角oracle LOGO图片为GIF格式,大小155*20 背景透明.文件名为:FNDSSC ... 
- 10个CSS简写/优化技巧-摘自网友
			10个CSS简写/优化技巧23来源/作者:未知 类别:前端开发 字体大小:大|中|小 背景颜色:蓝|白|灰 ? ? CSS简写就是指将多行的CSS属性简写成一行,又称为CSS代码优化或CSS缩写.CS ... 
- CentOS搭建“加速器”
			1.安装Shadowsocks 服务端 yum -y update yum install -y python-setuptools && easy_install pip pip i ... 
- memory  prefix hypo,hecto,hyper out1
			1● hypo 次等 2● hecto 许多,百 3● hyper 超过,许多 
- SSH key的烦恼
			ssh key即公钥.私钥对,使用这种方式比较安全也比较方便,可以不用输入用户名.密码. 配置步骤: 1.生成ssh key: ssh-keygen -t rsa -C "bjhuxiaol ... 
- 快速切题 poj2632
			Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7799 Accepted: 3388 D ... 
