题意

算出所有单调的子数组。

我的思路

可以发现子数组数与子数组长度的关系:1个数字为1,2个数字为1+2,3个数字为1+2+3,...,n个数字为1+2+...+n。这个数组可以通过打表得到。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long

int main()
{
    int n,count=1,a,b;
    ll sum=0;
    ll arry[100001];

    cin>>n;
    for(int i=1;i<=n;i++) sum+=i,arry[i]=sum;//打表
    sum=0;
    cin>>a;
    while(--n){
        cin>>b;
        if(b>=a) count++;//子数组长度的计算,开始为1,递增则加1.
        else{//单调递增断开的情况。
            sum += arry[count];
            count = 1;
        }
    }
    if(b>=a) sum+=arry[count];
    cout<<sum;

    return 0;
}

疑惑

我在本地运行示例1结果正确,提交为不完全正确,也没有说正确了几例,让我小小的脑袋里有大大的疑惑。纯菜鸟,没有描述的太好,希望有大佬看到能指点一二。