洛谷 P5788 【模板】单调栈

题目背景

模板题,无背景。

2019.12.12 更新数据,放宽时限,现在不再卡常了。

题目描述

给出项数为 n 的整数数列 a1...n​。

定义函数 f(i) 代表数列中第 i 个元素之后第一个大于 ai​ 的元素的下标,即 f(i)=mini<j≤n,aj​>ai​​{j}。若不存在,则 f(i)=0。

试求出 f(1...n)。

输入格式

第一行一个正整数 n。

第二行 n 个正整数 a1...n​。

输出格式

一行 n 个整数表示 f(1),f(2),...,f(n) 的值。

输入输出样例

输入 #1复制

复制代码
5
1 4 2 3 5

输出 #1复制

复制代码
2 5 4 5 0

说明/提示

【数据规模与约定】

对于 30% 的数据,n≤100;

对于 60% 的数据,n≤5×103 ;

对于 100% 的数据,1≤n≤3×106,1≤ai​≤109。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=3e6+10;
int n;
int a[N];
int ret[N];
void test()
{
    stack<int> st;
    for(int i=n;i>=1;i--)
    {
        while(st.size()&&a[st.top()]<=a[i])
        st.pop();
        if(st.size())
        ret[i]=st.top();
        st.push(i);
    }
    for(int i=1;i<=n;i++)
    {
        cout<<ret[i]<<" ";
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    test();
    return 0;
}
相关推荐
京东零售技术3 小时前
ACL 2025 | 一种用于电子商务query意图分类的半监督可扩展统一框架
算法
ytttr8734 小时前
matlab实现多标签K近邻(ML-KNN)算法
算法·机器学习·matlab
一招定胜负4 小时前
逻辑回归调优三板斧:参数调整、阈值设定、数据集平衡
算法·机器学习·逻辑回归
豆约翰4 小时前
Z字形扫描ccf
java·开发语言·算法
Salt_07284 小时前
DAY 35 文件的规范拆分和写法
python·算法·机器学习
风筝在晴天搁浅4 小时前
代码随想录 109.冗余连接Ⅱ
算法
业精于勤的牙4 小时前
浅谈:算法中的斐波那契数(三)
算法·职场和发展
ss2734 小时前
阻塞队列:三组核心方法全对比
java·数据结构·算法
小O的算法实验室4 小时前
2026年SEVC SCI2区,面向空地跨域无人集群的目标引导自适应路径规划方法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进