蓝桥杯-历届试题-连号区间数

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/WilliamSun0122/article/details/67638381

千万不要相信标签

这题是个水题,我看标签并查集半天没看出来,后来才发现区间的最大值 - 最小值 = 区间的长度就是连号区间。哎,标签害人不浅。

我们n^2遍历区间,每次更新最大最小值,等于区间长度就+1即可。

代码

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;

const int maxn = 5e4+5;
int sz[maxn];

int main()
{
    int n,l,r,ans;
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&sz[i]);
    ans=0;
    for(int i=1;i<=n;i++)
    {
        l=r=sz[i];
        for(int j=i;j<=n;j++)
        {
            if(sz[j]>r) r = sz[j];
            if(sz[j]<l) l = sz[j];
            if(r-l==j-i) ans++;
        }
    }
    printf("%d\n",ans);
    return 0;
}
展开阅读全文

没有更多推荐了,返回首页