zoukankan      html  css  js  c++  java
  • 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和独立
    ---------------------------------

  • 相关阅读:
    JavaScript model案例
    JavaScript 正反选示例
    JavaScript onchange
    JavaScript mouse事件
    JavaScript history属性
    JavaScript event事件
    JavaScript class css样式 DOM Tree
    JavaScript 增加和删除标签
    自动生成代理类
    Microsoft NLayerApp案例理论与实践–DDD、分布式DDD及其分层
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3097699.html
Copyright © 2011-2022 走看看