NYOJ 613 免费馅饼

来源:互联网 发布:ansys cfd软件 编辑:程序博客网 时间:2024/05/17 02:55

链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=613


dp[i ][j ] :第i秒在位置 j 的最大接到馅饼的量


从接完馅饼的最终位置开始判断,不断取最大的,倒推到起点。即得到最大值



#include <iostream>#include <cstdio>#include <cstring>#define MAX_T 100000using namespace std;pair <int ,int > p;int dp[MAX_T+5][15];                //第i 秒,在位置j 的最大值int max_3(int a,int b,int c){    if(a<b) a=b;    if(a<c) a=c;    return a;}int main(){    int n;    int T;    while(scanf("%d",&n)&&n!=0)    {        T=0;        memset(dp,0,sizeof(dp));        for(int i=0;i<n;i++)        {            scanf("%d%d",&p.first,&p.second);            dp[p.second][p.first]++;            T= T>p.second?T:p.second;        }        for(int i=T; i>=0; i--)            for(int j=0; j<11; j++)            {                dp[i][j]+=max_3(dp[i+1][j],dp[i+1][j-1],dp[i+1][j+1]);            }        printf("%d\n",dp[0][5]);//起点    }    return 0;}


0 0
原创粉丝点击