HDU 1422 重温世界杯(最长非负子序列)

来源:互联网 发布:淘宝一个月能刷多少钱 编辑:程序博客网 时间:2024/05/12 19:56

题目地址:点击打开链接

思路:

AC代码:

#include <iostream>#include <cstring>#include <cstdio>using namespace std;int dp[200020];int main(){    int n,a,b,sum,num,max1,i;    while(scanf("%d",&n) != EOF)    {        sum = 0;        num = 0;        max1 = 0;        for(i=0; i<n; i++)        {            scanf("%d%d",&a,&b);            dp[i] = a - b;        }        for(i=n; i<2*n-1; i++)        {            dp[i] = dp[i % n];        }        for(i=0; i<2*n-1; i++)        {            if(sum + dp[i] >= 0)            {                sum += dp[i];                num++;                if(num > max1)                    max1 = num;                if(num == n)//这一句必须得加,不然第一组测试数据就会错误,最长为n,要及时退出                    break;            }            else            {                sum = 0;                num = 0;            }        }        printf("%d\n",max1);    }    return 0;}

大神地址:点击打开链接

0 0
原创粉丝点击