java独立HDU 2845 Beans

本文是一篇关于java独立的帖子

    

Beans

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1945 Accepted Submission(s): 984

    

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.
java和独立


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 6 11 0 7 5 13 9 78 4 81 6 22 4 1 40 9 34 16 10 11 22 0 33 39 6
 

    

Sample Output
242
 

    

Source

    

    

 

    

Recommend

    

gaojie

    

 这标题是DP,DP自己独立做出来的次数未几,而此次是独立做出来的,哈哈哈,有点欣慰

    

其实这题分析后就会发现 可以先求整行的最大值用dp,知道每行的的最大值后在求团体的最大值用DP。其思路是一样的。 求行的最大值公式 0代表不选,1代表选
    每日一道理
感叹人生,是因为曾经没有过轰轰烈烈的壮举,觉得渺小,觉得平庸,似乎生活过于简单,简单得让人感觉烦躁。没有大言不惭地说过将来,只是比较现实地握住了现在,我想,这是一条路,每个人所必须踏上的一次旅程,曾经看到过这样一句话:成长的过程漫长却充实,自毁的过程短暂却留下一生痛苦,人生可以说是一次考验,何去何从取决于自我。

    

dp[j][0] = max(dp[j-1][1],dp[j-1][0]);

    

dp[j][1] = max(dp[j-2][0],dp[j-2][1]);

    

val=max(dp[j][0],dp[j][1]);

    

同样的方法处理团体。 注意处理边界啊
/***************************************************************
    > File Name:    a.cpp
    > Author:       SDUT_GYX
    > Mail:         2272902662@qq.com
    > Created Time: 2013/5/23 23:48:46
 **************************************************************/

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <queue>
#include <cstdlib>
#include <iomanip>
#include <string>
#include <vector>
#include <map>
#include <cmath>
#include <stack>
#define LL long long
using namespace std;
int a[210000],dp_row[210000][2],dp_col[210000][2];
int main()
{
  // freopen("data1.in","r",stdin);
    int n,m;
    while(scanf("%d %d",&n,&m)!=EOF)
    {
        for(int i=0;i<=n-1;i++)
        {
            for(int j=0;j<=m-1;j++)
            {
                 int x=i*m+j; 
                scanf("%d",&a[x]);
            }
        }
        int val,res=0;
        for(int i=0;i<=n-1;i++)
        {
            val=0;
            for(int j=0;j<=m-1;j++)
            {
                 int x=i*m+j; 
                if(j==0)
                {
					 dp_row[j][0] = 0;
                     dp_row[j][1]  = a[x];
                    val = max(val,dp_row[j][1]);
                    continue;
                }else if(j==1)
				{
					dp_row[j][0] = max(dp_row[j-1][0],dp_row[j-1][1]);
					dp_row[j][1] = a[x];
					val = max(val,dp_row[j][0]);
					val = max(val,dp_row[j][1]);
					continue;
				}
				dp_row[j][0] = max(dp_row[j-1][0],dp_row[j-1][1]);
				dp_row[j][1] = max(dp_row[j-2][0], dp_row[j-2][1]) +a[x];
				val = max(val,dp_row[j][0]);
				val = max(val,dp_row[j][1]);
            }
			if(i==0)
			{
				dp_col[i][0] = 0;
				dp_col[i][1] = val;
				res = max(res,dp_col[i][1]);
				continue;
			}else if(i==1)
			{
				dp_col[i][0] = max(dp_col[i-1][0],dp_col[i-1][1]);
				dp_col[i][1] = val;
				res = max(res,dp_col[i][1]);
				res = max(res,dp_col[i][0]);
				continue;
			}
			dp_col[i][0] = max(dp_col[i-1][0],dp_col[i-1][1]);
			dp_col[i][1] = max(dp_col[i-2][0],dp_col[i-2][1]) + val;
			res = max(res,dp_col[i][0]);
			res = max(res,dp_col[i][1]);
        }
        printf("%d\n",res);
    }
    return 0;
}


文章结束给大家分享下程序员的一些笑话语录: 一个程序员对自己的未来很迷茫,于是去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的"
于是他去问Lippman。
Lippman说"程序员的未来就是驾驭程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的"
于是他去问Gates。
Gates说"程序员的未来就是榨取程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝说"我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的"
于是他去问侯捷。
侯捷说"程序员的未来就是诱惑程序员"
这个程序员对这个未来不满意,于是他又去问上帝。
"万能的上帝呀,请你告诉我,我的未来会怎样?"
上帝摇摇头"唉,我的孩子,你还是别当程序员了")

--------------------------------- 原创文章 By
java和独立
---------------------------------

posted @ 2013-05-24 21:46  xinyuyuanm  阅读(156)  评论(0编辑  收藏  举报