首页 > 其他分享 >【模板】单调栈

【模板】单调栈

时间:2024-11-23 16:33:54浏览次数:7  
标签:... int 样例 a1 模板 include 单调

题目背景

模板题,无背景。

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

题目描述

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

定义函数 f(i) 代表数列中第 i 个元素之后第一个大于 ai 的元素的下标,即
。若不存在,则 f(i)=0。

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

输入格式

第一行一个正整数 n。

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

输出格式

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

样例 #1

样例输入 #1

5
1 4 2 3 5

样例输出 #1

2 5 4 5 0

提示

【数据规模与约定】

对于 30% 的数据,n<=100;

对于 60% 的数据,n<=10^3 ;

对于 100% 的数据,1 <= n<= 10^6,1<=n<= 10^9。

代码示例

#include<iostream>
#include<stack>
using namespace std;
int n,a[3000005],f[3000005];
stack<int>s;//模拟用的栈
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=n;i>=1;i--)
	{
		while(!s.empty()&&a[s.top()]<=a[i]) s.pop();//弹出栈顶比当前数小的
		f[i]=s.empty()?0:s.top();//存储答案
		s.push(i);//压入当前元素
	}
	for(int i=1;i<=n;i++) printf("%d ",f[i]);
	return 0;
}

标签:...,int,样例,a1,模板,include,单调
From: https://www.cnblogs.com/Xuxuan18/p/18564733

相关文章

  • 实验4 类的组合、继承、模板类、标准库
    实验任务2:GradeCalc.hpp:1#include<iostream>2#include<vector>3#include<string>4#include<algorithm>5#include<numeric>6#include<iomanip>78usingstd::vector;9usingstd::string;10......
  • C++ 标准模板库(STL)——queue的使用
    目录一、描述二、初始化1、包含的头文件2、变量初始化三、函数1、构造函数2、成员函数四、插入元素五、删除元素六、访问元素七、修改元素八、示例代码九、注意事项十、总结一、描述STL(StandardTemplateLibrary)是C++标准库的一部分,它提供了一系列容......
  • C++ 标准模板库(STL)——set的使用
    目录一、描述二、创建和初始化三、插入元素四、删除元素五、查找元素六、遍历元素七、大小和空判断八、迭代器九、自定义比较函数十、其他函数十一、注意事项一、描述std::set是C++STL中的一个关联容器,用于存储唯一的元素,并且这些元素是按照某种顺序排列......
  • 实验4 类的组合、继承、模板类、标准库
    1.实验任务11#include<iostream>23usingstd::cout;4usingstd::endl;56//类A的定义7classA{8public:9A(intx0,inty0);10voiddisplay()const;1112private:13intx,y;14};1516A::A(intx0,inty0):x{x0}......
  • 单调栈
    一.【模板】单调栈题目描述给出项数为\(n\)的整数数列\(a_{1\dotsn}\)。定义函数\(f(i)\)代表数列中第\(i\)个元素之后第一个大于\(a_i\)的元素的下标,即\(f(i)=\min_{i<j\leqn,a_j>a_i}\{j\}\)。若不存在,则\(f(i)=0\)。试求出\(f(1\dotsn)\)。输入格式......
  • PbootCMS网站怎么添加新的模板文件
    添加新的模板文件连接FTP服务器:使用FTP客户端连接到你的服务器。定位模板文件夹:导航到 /template/你的模板名称/ 目录。上传新文件:将新的模板文件(如HTML、CSS、JavaScript文件)上传到相应的文件夹中。修改引用:如果新文件需要在现有模板中引用,编辑相关HTML......
  • LLM开发模板:小白必看
    在开发基于LLM的应用时,遵循一定的项目结构和流程可以提升开发效率和代码质量。以下是一个简单的项目,接下来我将从0开始手把手带你搭建这样一个LLM项目。importOpenAIfrom"openai";importdotenvfrom"dotenv";dotenv.config()constclient=newOpenAI({apiK......
  • 快读快写模板 Pro Max
    模板namespaceQuickIO{template<typenameT>inlinevoidread(T&x){x=0;signedop=1;charch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')op=-1;for(;isdigit(ch);ch=getchar()......
  • 实验4 类的组合、继承、模板类、标准库
     1、实验任务2GradeCalc.hpp1#include<iostream>2#include<vector>3#include<string>4#include<algorithm>5#include<numeric>6#include<iomanip>78usingstd::vector;9usingstd::string;10usings......
  • gofiber: 模板: 分页功能模块
    一,代码1,模块packagepageimport"fmt"typePagestruct{ //定义分页的struct Totalint`json:"total"` TotalPageint`json:"totalpage"` CurrentPageint`json:"currentpage"` PrevPageint`json:"prevpage"` N......