免费馅饼

来源:互联网 发布:linux查看java安装目录 编辑:程序博客网 时间:2024/04/27 20:23

题目:https://cn.vjudge.net/contest/146325#status/1606915035/J/0/
MIMA:ACM7114

一开始把这个题想复杂了,想把前六层和后面的分开,后来发现对结果没什么影响,于是ok了。
只要推出这个公式即可
dp[i][j]+=max(dp[i+1][j],max(dp[i+1][j-1],dp[i+1][j+1]));

#include<stdio.h>#include<algorithm>using namespace std;#include<string.h>int dp[100005][15];int main(){    int n;    while(~scanf("%d",&n)&&n)    {        memset(dp,0,sizeof(dp));        int maxx=-1;        for(int u=0;u<n;u++)        {            int x,t;            scanf("%d%d",&x,&t);            maxx=max(maxx,t);            dp[t][++x]++;        }        for(int i=maxx;i>=0;i--)        {            for(int j=1;j<=11;j++)            {                dp[i][j]+=max(dp[i+1][j],max(dp[i+1][j-1],dp[i+1][j+1]));            }        }        printf("%d\n",dp[0][6]);    }    return 0;}
0 0
原创粉丝点击