当前位置: 首页> 娱乐> 影视 > 昆明网站制作策划_国际热点新闻事件2021_免费百度seo引流_qq营销

昆明网站制作策划_国际热点新闻事件2021_免费百度seo引流_qq营销

时间:2025/7/9 7:50:05来源:https://blog.csdn.net/DexterYttt/article/details/145558427 浏览次数:0次
昆明网站制作策划_国际热点新闻事件2021_免费百度seo引流_qq营销

链接:P5788 【模板】单调栈 - 洛谷 | 计算机科学教育新生态

题目描述

给出项数为 nn 的整数数列 a1…na1…n​。

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

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

输入格式

第一行一个正整数 nn。

第二行 nn 个正整数 a1…na1…n​。

输出格式

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

输入输出样例

输入 #1复制

5
1 4 2 3 5

输出 #1复制

2 5 4 5 0

说明/提示

【数据规模与约定】

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

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

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

C++代码如下:

#include<bits/stdc++.h>
using namespace std;const int N=3e6+5;
int a[N],ans[N];int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}stack<int> sta;for(int i=n;i>=1;i--){while(!sta.empty()&&a[i]>=a[sta.top()]){sta.pop();}ans[i]=sta.empty()?0:sta.top();sta.push(i);}for(int i=1;i<=n;i++){cout<<ans[i]<<" ";}return 0;
}

关键字:昆明网站制作策划_国际热点新闻事件2021_免费百度seo引流_qq营销

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: