单调栈模版【数据结构】

Juan_2012 2025-08-19 19:34:24

单调栈模版题

代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e6+10;
int n,a[N],f[N];
stack<pair<int,int>>s;
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	f[n]=0;
	s.push({a[n],n});
	for(int i=n-1;i>=1;i--){
		while(s.size() && s.top().first<=a[i]) s.pop();
		if(!s.size()) f[i]=0;
		else f[i]=s.top().second;
		s.push({a[i],i});
	}
	for(int i=1;i<=n;i++) cout<<f[i]<<' ';
	return 0;
}//用STL要注意栈是不是空的,不然容易RE
...全文
15 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,183

社区成员

发帖
与我相关
我的任务
社区描述
学习「 算法 」的捷径就是 「 题海战略 」,社区由「 夜深人静写算法 」作者创建,三年ACM经验,校集训队队长,亚洲区域赛金牌,世界总决赛选手。社区提供系统的训练,答疑解惑,面试经验,大厂内推等机会
社区管理员
  • 英雄哪里出来
  • 芝麻粒儿
  • Amy卜bo皮
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

QQ群:480072171

英雄算法交流 8 群

 

试试用AI创作助手写篇文章吧