1210. Number of consecutive intervals

Insert picture description here
Insert picture description here
Idea: Enumerate all intervals and perform judgment
code:

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

const int N = 10010,INF = 100000000;
int a[N];
//1~n某个排列说明里面的数不重复
int main()
{
    
    
    int n;
    cin >> n;
    for(int i = 0;i < n;i++)
    {
    
    
        cin >> a[i];
    }
    int res = 0;
    for(int i = 0;i < n;i++)
    {
    
    
        int minv = INF,maxv = -INF;
        for(int j = i;j < n;j++)
        {
    
    
            minv = min(minv,a[j]);//找到[i,j]区间的最小值
            maxv = max(maxv,a[j]);//找到[i,j]区间的最大值
            if(maxv - minv == j - i)//最大值减最小值如果等于区间长度,则说明为连号区间
            {
    
    
                res++;
            }
        }
    }
    cout << res << endl;
    
    return 0;
}

Guess you like

Origin blog.csdn.net/qq_45812180/article/details/114491207