洛谷1508 Likecloud-吃、吃、吃
2015-08-20 21:50
232 查看
题目背景
问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢;挨饿,挨饿,再挨饿!”题目描述
正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中。某日上课,正当他饿得头昏眼花之时,眼前突然闪现出了一个n*m(n and m<=200)的矩型的巨型大餐桌,而自己正处在这个大餐桌的一侧的中点下边。餐桌被划分为了n*m个小方格,每一个方格中都有一个圆形的巨型大餐盘,上面盛满了令李大水牛朝思暮想的食物。李大水牛已将餐桌上所有的食物按其所能提供的能量打了分(有些是负的,因为吃了要拉肚子),他决定从自己所处的位置吃到餐桌的另一侧,但他吃东西有一个习惯——只吃自己前方或左前方或右前方的盘中的食物。由于李大水牛已饿得不想动脑了,而他又想获得最大的能量,因此,他将这个问题交给了你。
每组数据的出发点都是最后一行的中间位置的下方!
输入输出格式
输入格式:[输入数据:]
第一行为m n.(n为奇数),李大水牛一开始在最后一行的中间的下方
接下来为m*n的数字距阵.
共有m行,每行n个数字.数字间用空格隔开.代表该格子上的盘中的食物所能提供的能量.
数字全是整数.
输出格式:
[输出数据:]
一个数,为你所找出的最大能量值.
输入输出样例
输入样例#1:6 7 16 4 3 12 6 0 3 4 -5 6 7 0 0 2 6 0 -1 -2 3 6 8 5 3 4 0 0 -2 7 -1 7 4 0 7 -5 6 0 -1 3 4 12 4 2
输出样例#1:
41
说明
快吃!快吃!快吃!解题思路
这个题乍一看是一个坐标型DP,实际上他就是一个坐标型DP,只是要注意一点,有些点是走不到的,真的走不到,比如样例中的(6,1),当然,注意不到这点过中国好样例还是可以的,但是骗过所有测试点是绝对不可能的,代码附上rogram t9; var f:array[0..201,0..201] of int64; n,m,i,j,sum:longint; ans:int64; function max(a,b,c:int64):int64; begin if (a>=b) and (a>=c) then exit(a); if (b>=c) and (b>=a) then exit(b); if (c>=a) and (c>=b) then exit(c); end; begin read(m,n); fillchar(f,sizeof(f),0); for i:=1 to m do for j:=1 to n do read(f[i,j]); sum:=3; for i:= m downto 1 do begin if n-sum<=0 then break; for j:=1 to (n-sum) div 2 do f[i,j]:=-10000; for j:=(n-sum) div 2 +sum+1 to n do f[i,j]:=-10000; sum:=sum+2; end; for i:=m-1 downto 1 do for j:=1 to n do begin f[i,j]:=max(f[i+1,j],f[i+1,j-1],f[i+1,j+1])+f[i,j]; end; for i:=1 to n do begin if ans<f[1,i] then ans:=f[1,i]; end; writeln(ans); end.
相关文章推荐
- Tips for Navigating Large Game Code Bases
- 历史总是惊人的相似
- 冒泡排序、直接插入排序
- session和cookie区别
- 微信网页调试的各种方法
- MyBatis执行动态sql及存储过程
- LeetCode——Add Digits
- loadView、viewDidLoad及viewDidUnload的关系
- vs中由低版本转换为高版本出现如下错误的解决办法
- 【一些事晚报】俞敏洪:因余佳文的一句话让我放弃了投资他
- 图像处理时一些卷积核子函数的生成
- 遍历数组按学号找人,若找到则输出信息,否则输出"查无此人"
- 【转】angularjs指令中的compile与link函数详解
- 2个无线路由器怎么连接
- Regex 手机号 座机 正则表达式
- poj 1840 哈希
- 逗比学习开始树莓派章
- hdoj2680 Choose the best route
- 分布式数据库一致性解决初步
- delphi开发学习五:QuickReoprt报表控件使用实例