求救
  • 板块灌水区
  • 楼主Emplace
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/8/20 18:08
  • 上次更新2023/11/3 02:25:11
查看原帖
求救
745865
Emplace楼主2023/8/20 18:08

[P2866]悬关(https://www.luogu.com.cn/problem/P2866#submit)

#include<bits/stdc++.h>
using namespace std;
vector<int> a;
vector<int> f;
int n;
int main(){
	cin>>n;
	a.resize(n+5);
	f.resize(n+5);
	for(int i=1;i<=n;i++){
	   scanf("%d",&a[i]);
	}
	stack<int> s;
	for(int i=1;i<=n;i++){
		while(!s.empty() && a[i] > a[s.top()]){
			f[s.top()]=i;
			s.pop();
		}
		s.push(i);
	}
	int cnt=0;
	for(int i=1;i<=n;i++) {
		if(f[i]==0){
			cnt+=n-i;
			continue;
		}
		cnt+=f[i]-i-1;
	}
	cout<<cnt;
}
2023/8/20 18:08
加载中...