hdu 1176
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 1176相关的知识,希望对你有一定的参考价值。
用数塔模型解决,用dp[time][side]来表示t秒在x位置掉下的馅饼。然后自下而上的去求一个最大和。参考文章:
http://www.cnblogs.com/sjy123/p/3242730.html
https://blog.csdn.net/theonegis/article/details/45801201
#include<algorithm>
#include<cstdio>
#include<string.h>
using namespace std;
int max3(int a,int b,int c){
int max2=max(a,b);
return max(max2,c);
}
const int len=100001;
int dp[len][11];
int main(){
int n,side,time;
while(~scanf("%d",&n)&&n){
int maxtime=0;
memset(dp,0,sizeof(dp));
while(n--){
scanf("%d %d",&side,&time);
dp[time][side]++;
maxtime=max(maxtime,time);
}
for(int i=maxtime-1;i>=0;i--){
dp[i][0]+=max(dp[i+1][0],dp[i+1][1]);
dp[i][10]+=max(dp[i+1][10],dp[i+1][9]);
for(int j=1;j<=9;j++) dp[i][j]+=max3(dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1]);
}
printf("%d\n",dp[0][5]);
}
return 0;
}
以上是关于hdu 1176的主要内容,如果未能解决你的问题,请参考以下文章