博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj3250(单调栈模板题)
阅读量:6001 次
发布时间:2019-06-20

本文共 658 字,大约阅读时间需要 2 分钟。

题目链接:https://vjudge.net/problem/POJ-3250

题意:求序列中每个点右边第一个>=自身的点的下标。

思路:简单介绍单调栈,主要用来求向左/右第一个小于/大于自身的下标,直接求的话复杂度为O(n2),而单调栈只有O(n),利用好单调栈十分有用。一个元素向左遍历的第一个比它小的数的位置就是将它插入单调栈时栈顶元素的值,若栈为空,则说明不存在这么一个数。然后将此元素的下标存入栈,就能类似迭代般地求解后面的元素

  单调栈的本质是,当一个数a在另一个数b前面且比b大,那么数a就在找第一个比某数小的问题里就完全没有考虑的必要了,他被b完全屏蔽了。

  这道题就是单调栈的简单应用,模板题。注意结果用int存不下,需要用long long。

AC代码:

#include
using namespace std;int n,a[80005],stk[80005],p;long long ans;int main(){ scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&a[i]); a[n+1]=0x3f3f3f3f; stk[p++]=n+1; for(int i=n;i>=1;--i){ while(a[stk[p-1]]

 

转载于:https://www.cnblogs.com/FrankChen831X/p/10784015.html

你可能感兴趣的文章
MaxCompute命令行工具——odpscmd的操作使用
查看>>
分布式服务框架设计
查看>>
2018的初冬,派卧底去阿里、京东、美团带回来的面试题及答案
查看>>
解读百度AutoDL:打破SOTA纪录的神经架构搜索是如何炼成的
查看>>
原生JavaScript封装的ajax方法示例
查看>>
高并发编程:解析HashMap
查看>>
阿里P8大牛呕心沥血整理出来的一份Java核心知识点合集
查看>>
全面解析Java注解
查看>>
关于城市级联选择和数据回显的解决方案
查看>>
设计模式-原型模式
查看>>
1、java实现发送纯文本邮件
查看>>
OSChina 周一乱弹 —— 花式遛狗法
查看>>
OSChina 周五乱弹 ——喵喵酱你脑补求婚场景了么?
查看>>
Hibernate4.x之入门篇
查看>>
有意思的小程序
查看>>
极光推送角标问题
查看>>
JDBC快速入门教程(附bbs、购物项目教程及源码)
查看>>
jd 反编译工具插件
查看>>
如何解决:Android中 Error generating final archive: D...
查看>>
xfce-terminal 终端光标设置
查看>>