hdu1176 免费馅饼

来源:互联网 发布:最好视频播放软件 编辑:程序博客网 时间:2024/06/05 15:12
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#define INF 0x3f3f3f3fint dp[12][100050],a[12][100050];int max(int a,int b,int c){    if(a>=b&&a>=c)        return a;    if(b>=c&&b>=a)        return b;    if(c>=a&&c>=b)        return c;}int main(){    int i,j,k,n,t,x,maxm;    while(scanf("%d",&n)==1)    {        if(n==0)            break;        memset(a,0,sizeof(a));        for(i=0;i<12;i++)            for(j=0;j<100;j++)            dp[i][j]=-INF;        for(i=0;i<n;i++)        {            scanf("%d%d",&x,&t);            a[x][t]++;        }        dp[4][1]=a[4][1];        dp[5][1]=a[5][1];        dp[6][1]=a[6][1];        for(i=1;i<100002;i++)        {            for(j=0;j<=10;j++)            {                if(j==0)                    dp[j][i+1]=max(dp[j][i],dp[j+1][i],-INF)+a[j][i+1];                else if(j==10)                    dp[j][i+1]=max(dp[j][i],dp[j-1][i],-INF)+a[j][i+1];                else                dp[j][i+1]=max(dp[j][i],dp[j+1][i],dp[j-1][i])+a[j][i+1];            }        }        for(i=0,maxm=-INF;i<=10;i++)        {            if(dp[i][100000]>maxm)                maxm=dp[i][100000];        }        printf("%d\n",maxm);    }    return 0;}

0 0
原创粉丝点击