#include<iostream>
using namespace std;
#include<cstdio>
#include<cstring>
int dp[100005][15];
int max3(int x,int y,int z)
{
if(x>=y && x>=z)
return x;
else if(y>=x && y>=z)
return y;
else
return z;
}
int main()
{
int n;
while(scanf("%d",&n)==1 && n)
{
memset(dp,0,sizeof(dp));
int i,j,x,t,time=0;
for(i=1;i<=n;i++)
{
scanf("%d %d",&x,&t);
dp[t][x]++;
if(t>time)
time=t;
}
for(i=time-1;i>=0;i--)
{
for(j=1;j<=9;j++)
{
dp[i][j]+=max3(dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1]);
}
dp[i][0]+=max(dp[i+1][0],dp[i+1][1]);
dp[i][10]+=max(dp[i+1][9],dp[i+1][10]);
}
printf("%d\n",dp[0][5]);
}
return 0;
}
hdu 1176 dp近似数塔
最新推荐文章于 2021-01-02 17:24:42 发布