zoukankan      html  css  js  c++  java
  • hdu 1176

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176

    与数塔类似,但采用自下而上的方法更好,更方面,状态转移方程:dp[i][j]=max{dp[i+1][j],dp[i+1][j-1],dp[i+1][j+1]}+value[i][j];

    其中dp[i][j]表示第i秒时在位置j时包里的烧饼;

    View Code
     1 #include<iostream>
     2 #include<algorithm>
     3 const int N=100010;
     4 using namespace std;
     5 
     6 int value[N][11];
     7 int dp[N][11];
     8 
     9 int main(){
    10     int n;
    11     while(scanf("%d",&n)!=EOF){
    12         if(n==0)break;
    13         memset(dp,0,sizeof(dp));
    14         memset(value,0,sizeof(value));
    15         int x,t,_time=0;
    16         for(int i=0;i<n;i++){
    17             scanf("%d%d",&x,&t);
    18             value[t][x]++;
    19             if(t>_time)_time=t;
    20         }
    21         int ans=0;
    22         for(int i=_time;i>=0;i--){
    23             for(int j=0;j<11;j++){
    24                 if(j==0){
    25                     dp[i][j]=max(dp[i+1][j+1],dp[i+1][j])+value[i][j];
    26                 }else if(j==10){
    27                     dp[i][j]=max(dp[i+1][j-1],dp[i+1][j])+value[i][j];
    28                 }else
    29                     dp[i][j]=max(dp[i+1][j],max(dp[i+1][j-1],dp[i+1][j+1]))+value[i][j];
    30             }
    31         }
    32         printf("%d\n",dp[0][5]);
    33     }
    34     return 0;
    35 }
  • 相关阅读:
    poj 2104 C
    2015 百度之星初赛 1 2 2015ACM/ICPC亚洲区上海站 codeforces 851
    3.10补
    3.9补
    3.8补
    3.6补
    3.5补
    3.4补
    3.3补
    2.35补
  • 原文地址:https://www.cnblogs.com/wally/p/2954469.html
Copyright © 2011-2022 走看看