文章目录
- 题目
- 输入格式
- 输出格式
- 数据范围
- 样例
- 输入样例1
- 输出样例1
- 输入样例2
- 输出样例2
- 样例解释
- 思路
- 代码
题目
输入格式
输出格式
数据范围
样例
输入样例1
4
3 2 4 1
输出样例1
7
输入样例2
5
3 4 2 5 1
输出样例2
9
样例解释
思路
- 固定L,遍历R
- 在[L,R]区域中找到最大值Max,最小Min,若maxv - minv == j - i,则说明该区域[L,R]是递增且连续的
代码
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int n;
const int N=11000;
int a[N],ans=0;
int main()
{
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];//读入每组数据
for(int i = 1; i <= n; i++)
{
// 定义最大值和最小值
int max1 = -1;
int min1= 10101;
for(int j = i; j <=n ; j++)
{
max1 = max(a[j], max1);
min1 = min(a[j], min1);
// 判断是否是连号区间
if((max1 - min1) == (j - i))
ans++;
}
}
cout << ans <<"\n";
return 0;
}```