千万不要相信标签
这题是个水题,我看标签并查集半天没看出来,后来才发现区间的最大值 - 最小值 = 区间的长度就是连号区间。哎,标签害人不浅。
我们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;
}