单调栈lllll

2023-05-16

单调栈,就是一个栈,不过栈内元素保证单调性。即,栈内元素要么从小到大,要么从大到小。
而单调栈维护的就是一个数前/后第一个大于/小于他的数。

例题:P5788 【模板】单调栈
例题就是一个求每个数后第一个大于他的数。

那么重点来了:怎么做!面对这样的数据,不好下手。那么我们把她转化一下:有nn个人,每个人向右看,求她看到的第一个人。
看图:


通过观察,我们会发现,在她后面的,比她矮的,一定会被她遮住。那么,这个点就没用了。而根据现实生活和刚才的推断,我们看到的人肯定是一个比一个高的,而没看到的,留着也没用,直接扔了QwQ。那么,这就是符合单调性的。再看,那些没用的人什么时候扔掉?当然是遇到比她高的人了。那么就可以一个一个地走掉,而且肯定是在已经判断过的人的前面(中间和后面的在之前就走掉了),所以就直接从前面弹出。咦?这不就像一个栈吗?没错,这就是单调栈的实现方法。

再归纳一下:

  • 从后往前扫

  • 对于每个点:

    • 弹出栈顶比她小的元素
    • 此时栈顶就是答案
    • 加入这个元素

由于是从前往后输出,还要把答案放到一个数组里。

#include<cstdio>
#include<stack>
using namespace std;
int n,a[3000005],f[3000005];//a是需要判断的数组(即输入的数组),f是存储答案的数组
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();//存储答案,由于没有比她大的要输出0,所以加了个三目运算
		s.push(i);//压入当前元素
	}
	for(int i=1;i<=n;i++) printf("%d ",f[i]);//输出
	return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单调栈lllll 的相关文章

随机推荐

  • 基于springboot的电影推荐网站管理系统

    一 基于springboot的电影推荐网站管理系统 普通用户 浏览电影列表查看电影预告与详情查看收录的电影网站查看最新电影动态 管理员 管理电影预告与详情管理收录的电影网站管理最新电影动态管理网址信息管理友情链接 二 技术框架 这是一款基于
  • 代码优化-减少if else

    写在前面 不知大家有没遇到过像 横放着的金字塔 一样的 if else 嵌套 xff1a 我并没夸大其词 xff0c 我是真的遇到过了 xff01 嵌套 6 7 层 xff0c 一个函数几百行 xff0c 简 xff01 直 xff01 看
  • iapp裕v3语言浏览器教程

    如果你要写简单的浏览器的话 你可以这么做qwq 创建好应用后先添加浏览器 他的属性为 width span class token operator 61 span span class token operator span span c
  • VMOS-Pro一款虚拟机app。

    vmos分为两个版本 xff1a 安卓vmos 安卓vmospro 两个的差距在于界面 xff0c 可以说vmospro是重磅更新了 xff0c 让我们了解这一款虚拟机吧 xff01 首先这两款虚拟机都是安卓系统 xff0c 你要ios上红
  • UTM虚拟机-首款iOS虚拟机

    utm虚拟机 xff1b 非越狱安装方法 utm虚拟机是一款ipa为后缀的文件 xff0c 需要爱思助手安装 越狱安装方法 使用uncover越狱后在安装ipa文件 utm介绍 他跟bochs limbo qemo apq等app一样 xf
  • 所有小米机型 解BT+刷Magisk并ROOT+躲避应用ROOT环境检查教程

    废话章节 xff0c 可以不看 时隔一年又回来了 上一篇文章还是在2021年更新的 xff0c 因为学业问题我这是1年1更显然不行 xff0c 那我这次为啥不更新iApp了 xff1f 因为忘得差不多了 我也没想到我有一天回过头来看自己的文
  • 【Minecraft】【ModPC】【我的世界】 我的世界电脑版如何进入网络游戏?

    我的世界电脑版如何进入网络游戏 xff1f 须知 看看就好 xff0c 不要频繁使用modpc xff0c 破坏游戏玩家体验 xff01 不知道为什么Win11会用着用着就会闪退 降级到Win10就什么事也没有 下载 ModPC下载 包含普
  • WindwosServer系统一些设置【网卡驱动修复】【安装UWP应用】【服务器管理取消开机自启动】

    WindwosServer系统一些设置 这里以2022为例 xff1a 第一 网卡驱动丢失修复 此教程只针对I219 V LM网卡 xff01 小知识 xff1a 当电脑没网时 xff0c 将手机和电脑用USB数据线连接 打开设置 xff1
  • dp最长不上升子序列 二分upper lower+贪心

    题意 找出最长不上升子序列长度 再找出最长不下降子序列最大长度 写法运用了指针 减少了代码量 include lt iostream gt include lt algorithm gt using namespace std const
  • 小米平板5ProWIFI(elish)刷ArrowOS

    文章目录 警告下载奇兔刷机系统本体及Recovery 清除数据刷入AospRec开始刷入警告 完成设置输入法 变砖头了qwq又是警告 芝士截图Root方法结尾 警告 此文章只针对 小米平板5Pro Wifi版本 xff08 elish xf
  • 【宝塔】【Windows】【Blessing-Skin】【我的世界】用宝塔Windows搭建皮肤站

    文章目录 前言所需环境相关链接安装宝塔安装步骤访问宝塔同意协议 安装环境安装WNMP添加站点 开始安装皮肤站配置网站配置Nginx URL重写规则 xff08 即 伪静态 xff09 配置PHP 安装皮肤站 一些小调整安装插件常见问题 插件
  • ping的详细过程学习笔记

    pc1 ping pc2 也就是pc1 xff1a 192 168 1 1 ping pc2 xff1a 192 168 1 2 属于同一网段的ping过程 步骤1 ping开始 即后台运行192 168 1 1 ping 192 168
  • FTPClient上传文件内容为空/损坏/缺失

    项目场景 xff1a 项目场景 xff1a 本地项目联调OA系统的时候 xff0c 在发送审批时会传送相关附件 xff0c 该附件由本地项目上传至FTP xff0c OA系统会根据我们提供的路径和文件名去FTP中找到该文件 问题描述 xff
  • Debian9桌面设置

    本文由荒原之梦原创 xff0c 原文链接 xff1a http zhaokaifeng com p 61 665 新安装的Debian9桌面上啥都没有 xff0c 就像这样 xff1a 图 1 虽然很简洁 xff0c 但是用着不是很方便 x
  • 爬虫遇到Cloudflare问题

    网址 xff1a https opensea io rankings sortBy 61 seven day volume 返回代码 xff1a 403 遇到的问题 xff1a Access denied api opensea io us
  • java servlet写的网页猜数小游戏

    几年前 xff0c 用java servlet 写了个猜数的网页小游戏 xff1b 今天看了觉得有点意思 xff0c 贴出来怀旧一下 xff1a 1 代码如下 xff1a package cn wzb import java io impo
  • 安卓-system.img镜像文件过大问题

    3126 5 1SDK预置过多apk时导致编译otapackage时报错处理 xff1a 1 修改prebuilts python linux x86 2 7 5 lib python2 7 zipfile py文件中为ZIP64 LIMI
  • 使用Tesseract-OCR识别图片中的文字并生成双层PDF

    识别图片中的文字并不是很困难 如果自己训练一个文字识别的深度学习程序去识别也是可以 xff0c 但是太费劲 Tesseract OCR是一个开源的文字识别引擎 xff0c 并且支持包括中文在内的多国语言 只要将语言配置上去 xff0c 就可
  • iptables(三)iptables命令详解

    一 语法规则 iptables t table COMMAND chain CONDITION j ACTION t table 是指 39 操作的表 39 filter nat mangle或raw 39 默认使用filter 39 CO
  • 单调栈lllll

    单调栈 xff0c 就是一个栈 xff0c 不过栈内元素保证单调性 即 xff0c 栈内元素要么从小到大 xff0c 要么从大到小 而单调栈维护的就是一个数前 后第一个大于 小于他的数 例题 xff1a P5788 模板 单调栈 例题就是一