cf round 520 A

这题虽然是a题,但还是有些坑的。

就是求出最长连续子段和。

如果连续子段和的开头是第一个数字且第一个数字是1,那不保留第一个数字就可以。

如果结尾是最后一个数字且最后一个数字是1000,那不保留最后一个数字也可以。

如果要分类讨论的话,会讨论到死。

怎么避免讨论到底是保留一个数字还是两个数字呢?

那就前面填一个0,最后多加一个1001就好啦。

最长子段和要减去2.

#include<bits/stdc++.h>
using namespace std;
int a[1001];
int l=1,r=1,maxl=1,maxr=1;
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    a[++n]=1001;
    int pre=0;
    int len=1;
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        if(a[i]==pre+1)
        {
            len++;
            pre++;
        }
        else
        {
            len=1;
            pre=a[i];
        }
        ans=max(len-2,ans);
    }
    printf("%d
",ans);
}
原文地址:https://www.cnblogs.com/lishengkangshidatiancai/p/9966024.html