zoukankan      html  css  js  c++  java
  • POJ 2385 Apple Catching

     可以设计三维DP,dp[i][j][k]表示i秒的时候,走了j步,在编号为k的树下获得的最大价值。

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    
    int T,W;
    int dp[1200][40][3];
    int a[2000];
    int ans;
    
    void read()
    {
        for(int i=1;i<=T;i++) scanf("%d",&a[i]);
    }
    
    void init()
    {
        memset(a,-1,sizeof a);
        memset(dp,-1,sizeof dp);
        ans=0;
    }
    
    void work()
    {
        if(a[1]==1) dp[1][0][1]=1,dp[1][1][2]=0,ans=1;
        else dp[1][0][1]=0,dp[1][1][2]=1,ans=1;
    
    
        for(int i=1;i<=T;i++)
        {
            for(int j=0;j<=W;j++)
            {
                ans=max(ans,dp[i][j][1]);
                ans=max(ans,dp[i][j][2]);
                if(dp[i][j][1]!=-1)
                {
                    //原地不动
                    if(a[i+1]==1) dp[i+1][j][1]=max(dp[i+1][j][1],dp[i][j][1]+1);
                    else dp[i+1][j][1]=max(dp[i+1][j][1],dp[i][j][1]);
    
                    //移动到2
                    if(a[i+1]==2) dp[i+1][j+1][2]=max(dp[i+1][j+1][2],dp[i][j][1]+1);
                    else dp[i+1][j+1][2]=max(dp[i+1][j+1][2],dp[i][j][1]);
                }
                if(dp[i][j][2]!=-1)
                {
                    //原地不动
                    if(a[i+1]==2) dp[i+1][j][2]=max(dp[i+1][j][2],dp[i][j][2]+1);
                    else dp[i+1][j][2]=max(dp[i+1][j][2],dp[i][j][2]);
    
                    //移动到1
                    if(a[i+1]==1) dp[i+1][j+1][1]=max(dp[i+1][j+1][1],dp[i][j][2]+1);
                    else dp[i+1][j+1][1]=max(dp[i+1][j+1][1],dp[i][j][2]);
                }
            }
        }
        printf("%d
    ",ans);
    }
    
    int main()
    {
        while(~scanf("%d%d",&T,&W))
        {
            init();
            read();
            work();
        }
        return 0;
    }
  • 相关阅读:
    winform制作自定义控件(入门)
    VB2012读取xml
    VB生成xml
    通宵疯狂积累VB.NET基础知识
    【转】vs2010下创建webservice
    React Native 快速入门之认识Props和State
    mac下 mysql / nginx 问题总汇
    Oracle例外定义
    mac os x 把reids nignx mongodb做成随机启动吧
    Oracle 记录
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5308941.html
Copyright © 2011-2022 走看看