HDU 2845 Beans
来源:互联网 发布:日本文学 知乎 编辑:程序博客网 时间:2024/06/05 04:48
Beans
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2873 Accepted Submission(s): 1392
Problem Description
Bean-eating is an interesting game, everyone owns an M*N matrix, which is filled with different qualities beans. Meantime, there is only one bean in any 1*1 grid. Now you want to eat the beans and collect the qualities, but everyone must obey by the following rules: if you eat the bean at the coordinate(x, y), you can’t eat the beans anyway at the coordinates listed (if exiting): (x, y-1), (x, y+1), and the both rows whose abscissas are x-1 and x+1.
Now, how much qualities can you eat and then get ?
Now, how much qualities can you eat and then get ?
Input
There are a few cases. In each case, there are two integer M (row number) and N (column number). The next M lines each contain N integers, representing the qualities of the beans. We can make sure that the quality of bean isn't beyond 1000, and 1<=M*N<=200000.
Output
For each case, you just output the MAX qualities you can eat and then get.
Sample Input
4 611 0 7 5 13 978 4 81 6 22 41 40 9 34 16 1011 22 0 33 39 6
Sample Output
242
Source
2009 Multi-University Training Contest 4 - Host by HDU
解题思路:列的状态只与最多之前三列的选择有关系,滚动数组搞一下求出单的最优值,行的状态与列状态相同,也用滚动数组搞一下,更新答案即可
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int **matrix;int main(){ int m,n,i,j,r[4],c[4],temp,ans; while(scanf("%d%d",&m,&n)!=-1) { ans=-1; matrix=new int*[m+1]; for(i=0;i<=m;i++) matrix[i]=new int[n+1]; memset(r,0,sizeof(r)); memset(c,0,sizeof(c)); for(i=1;i<=m;i++) for(j=1;j<=n;j++) scanf("%d",&matrix[i][j]); for(i=1;i<=m;i++) { c[1]=matrix[i][1]; c[2]=max(matrix[i][1],matrix[i][2]); c[3]=max(matrix[i][1]+matrix[i][3],matrix[i][2]); temp=max(max(c[1],c[2]),c[3]); for(j=4;j<=n;j++) { c[j%4]=max(max(c[(j-2)%4]+matrix[i][j],c[(j-3)%4]+matrix[i][j]),c[(j-1)%4]); if(temp<c[j%4]) temp=c[j%4]; } if(i==1) r[i%4]=temp; else if(i==2) r[i%4]=max(temp,r[1]); else if(i==3) r[i%4]=max(r[1]+temp,r[2]); else r[i%4]=max(max(r[(i-2)%4]+temp,r[(i-3)%4]+temp),r[(i-1)%4]); } for(i=0;i<4;i++) if(ans<r[i]) ans=r[i]; printf("%d\n",ans); } delete matrix; return 0;}
0 0
- HDU 2845 Beans
- HDU 2845 Beans
- hdu 2845 Beans
- hdu 2845 Beans
- hdu 2845 Beans
- HDU 2845 Beans
- hdu 2845 Beans
- HDU 2845 Beans
- HDU 2845 Beans
- HDU 2845 Beans
- HDU 2845 Beans (DP)
- HDU 2845 DP Beans
- HDU 2845 Beans
- Beans-hdu-2845
- hdu 2845 Beans (DP)
- HDU 2845 Beans
- hdu 2845 Beans
- HDU 2845 Beans
- 梦想与行动:仰望星空,脚踏实地
- Git:一分钟学会简单使用
- Linux企业级开发技术(1)——epoll企业级开发之简介
- 北斗的投资哲学、投资理念及投资策略
- thymeleaf例子
- HDU 2845 Beans
- IOS8系统下,APP开发的不同,及碰到的问题收集
- Maven配置本地库加载ojdbc14-10.2.0.4.0.jar文件
- Linux 静态库&动态库调用
- 【Java.JMS】点对点通信——Queue
- Android 3.0 r1中文API文档(103) —— InputMethodManager [输入法]
- android完全退出应用程序
- PHP格式化输出json数据
- 通过Web打启动本地应用程序(一)