其实想通了的话,本题并不难,关键是要**把二维分为多个一维**(大概就是这个意思,表达能力不太好,见谅!)
本来一看,以为会超时,可能是数据较水吧,用这种方法还挺快的(至少没有超时),下面是程序:
```cpp
#include<bits/stdc++.h>
int n,a[10001],ans,maxnum;
int main(){
cin>>n;
for(int i = 1;i<=n;i++){
cin>>a[i];
maxnum = max(maxnum,a[i]);
}
for(int i = 1;i<=maxnum;i++){
int x = 1,y;
while(x<=n){
for(;x<=n;x++)
if(a[x]>=i) break;
for(y = x+1;y<=n;y++)
if(a[y]>=i) break;
if(x<y&&y<=n&&x<=n) ans+=y-x-1;
x = y;
}
}
cout<<ans;
return 0;
}
```
当然,这里还可以再优化,比如可以把中间x,y连续的部分滤掉,这里只提供一下思路,就不再写了(懒╮(╯﹏╰)╭)
第一次写题解,好紧张o(>﹏<)o
有什么问题或建议欢迎评论~~~