P8094 [USACO22JAN] Cow Frisbee S 题解
思路
维护一个单调栈,每进入一个数
代码
#include <bits/stdc++.h>
using namespace std;
long long n,ans=0;
long long a[300005];
stack<long long>s;
int main() {
cin>>n;
for (int i=1;i<=n;i++)cin>>a[i];
for (int i=1;i<=n;i++){
while (!s.empty()&&a[s.top()]<a[i]){
ans+=i-s.top()+1;
s.pop();
}
if (!s.empty())ans+=i-s.top()+1;
s.push(i);
}
cout<<ans<<endl;
return 0;
}