正题
评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P2866
大意
一个cici是在他距离他后面第一个比他的hh大中间的间隔。求的和
解题思路
我们可以发现这道题肯定得把cici放在一起统计,我们可以开一个单调栈,每次压进去一个数,将小于它的都踢掉,栈中剩下数减一的就是一个cici
代码
#include<cstdio>
#include<stack>
using namespace std;
stack<long long> p;
int n;
long long h[80200],s;
int main()
{scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%d",&h[i]);//输入for (int i=1;i<=n;i++){while (!p.empty()&&h[p.top()]<=h[i]) p.pop();//维护单调队列p.push(i);//压入s+=p.size()-1;//计算答案}printf("%lld",s);
}