zoukankan      html  css  js  c++  java
  • hdu 1176 馅饼

    略微简单的动态规划

    只是简单贴代码就好了。

    #include <stdio.h>
    #include <string.h>
    
    int dp[100007][11];
    int ans[100007][11];
    int n,N;
    
    inline int Max(int x,int c){
        return x>c?x:c;
    }
    int v[16];
    void DP()
    {
        int i,j;
        memset(v,0,sizeof(v));
        memset(ans,0,sizeof(ans));
        v[5]=v[4]=v[6]=1;
        int len = 2;
        for(i=1;i<=N+1;i++)
        {
            for(j=0;j<=10;j++)
            {
                if(v[j]){
                    ans[i][j] = Max(dp[i][j]+ans[i-1][j],ans[i][j]);    
                }
                if(j-1>=0 &&v[j-1]){
                    ans[i][j-1] = Max(dp[i][j-1]+ans[i-1][j],ans[i][j-1]);
                }
                if(j+1<=10&&v[j+1]){
                    ans[i][j+1] = Max(dp[i][j+1]+ans[i-1][j],ans[i][j+1]);
                }
            }
            if(len<=5){
                v[5-len]=1,v[5+len]=1;
            }
            len++;
        }
        
        int _max = -1100000000;
        for(int x=0;x<=10;x++) 
            if(_max < ans[N+1][x]) _max = ans[N+1][x];
        printf("%d
    ",_max);
    }
    
    void show()
    {
        for(int i=1;i<=N+1;i++){
            for(int x=0;x<=10;x++){
                printf("%d ",ans[i][x]);
            }
            puts("");
        }
    }
    
    int main()
    {
        int i;
        while(scanf("%d",&n),n){
            memset(dp,0,sizeof(dp));
            for(i=1;i<=n;i++){
                int ti,pot;
                scanf("%d%d",&pot,&ti);
                dp[ti][pot]++;
                if(ti > N) N = ti;
            }
            DP();
            //show();
        }
        return 0;
    }
    View Code
  • 相关阅读:
    shell预备知识
    php session和cookie
    php数据库访问抽象层PDO
    递归求斐波那契数
    SqlDataReader的使用
    DataAdapter与DataSet的使用
    CLR
    Android Studio javadoc 生成注释文档
    MySQL教程之concat以及group_concat的用法
    一文读懂MQTT协议
  • 原文地址:https://www.cnblogs.com/cton/p/3652862.html
Copyright © 2011-2022 走看看