[JSOI2008] 最大数 (单调栈)

news/2024/10/2 10:17:47

算法

基础

发现插入总在最后一个进行

单调栈维护一个区间的 \(max / min\) 单调队列维护以一个值为 \(max / min\) 的最大区间

显然可以使用单调栈维护
其原理为

\(a, b \in seq, a < b, pos[a] < pos[b]\)
那么显然 \(a\) 没有卵用

因此可以用单调栈维护一个包含 \(seq\) 的最后一个元素的单调递减序列
求解区间 \([L, Last]\) 的值, 即为求解在 \([L, Last]\) 这一区间内第一个存在于单调栈中的元素

优化

二分 ( \(O(n\log n)\) )

显然可以二分查找
不加赘述

并查集 (\(O(n)\))

对于一个下标 \(i\) 将它和在它之后第一个在单调队列里的数的下标放在同一个并查集中
这样可以保证在插入的过程中仍然可以 \(O(1)\) 处理查询

#include <bits/stdc++.h>
const int MAXSIZE = 2e5 + 20;
#define int long longint M, D;class Union_Set
{private:public:int fa[MAXSIZE];int find(int Point){return fa[Point] = (Point == fa[Point]) ? Point : find(fa[Point]);}void insert(int Fa, int Son){fa[find(Son)] = find(Fa);}
} US;struct node
{int Val;int sub;
};class MonoStack
{private:public:node Val[MAXSIZE];int top;void init(){top = 0;}void insert(int x, int sub){while (Val[top].Val < x && top){US.insert(sub, Val[top].sub);top--;    }Val[++top].sub = sub;Val[top].Val = x;}} MS;int t = 0;
int size = 0;
int Num[MAXSIZE];void solve()
{MS.init();while(M--){char type;std::cin >> type;if(type == 'A'){scanf("%lld", &Num[++size]);Num[size] = (Num[size] + t) % D;US.fa[size] = size; MS.insert(Num[size], size);}else{int L;scanf("%lld", &L);L = size - L + 1;t = Num[US.find(L)];printf("%lld\n", t);}}
}signed main()
{scanf("%lld %lld", &M, &D);solve();return 0;
}

总结

代码

注意在单调栈弹出是确保位置有意义
并查集插入时需要初始化

思路

并查集往往可以用来处理连续的链向问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/67028.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

数字经济与新质生产力:地理信息与遥感视角下的深度分析

在数字化浪潮的推动下,我们正见证着生产力的一次历史性飞跃。数字经济如何重塑生产力的三大要素:劳动对象、劳动资料和劳动者?让我们来深度分析数字经济如何推动新质生产力的发展。一、数字经济与地理信息的融合地理信息与遥感技术是数字经济中不可或缺的一环。它们为我们提…

土地资源的可持续管理:探索长期利用的绿色路径

在全球化与城市化的双重驱动下,土地资源的可持续管理已成为保障人类福祉与地球健康的迫切议题。本文将深入剖析实现土地资源长期可持续利用的策略与实践,从理论到实践,全方位探索这条绿色发展的必由之路。一、土地资源的现状与挑战当前,土地退化、耕地减少、城市蔓延、生态…

超轻巧modbus调试助手使用说明

一、使用说明 1.1 数据格式和其他的modbus采集工具一样,本组件也支持各种数据格式,其实就是高字节低字节的顺序。 一般是2字节表示一个数据,后面又有4字节表示一个数据,目前好像还有8字节表示一个数据的设备。 不同厂家的设备对应的字节顺序可能不同,要求可以自定义顺序,…

南沙C++信奥赛陈老师解一本通题 1984:【19CSPJ普及组】纪念品

​【题目描述】小伟突然获得一种超能力,他知道未来 T 天 NN种纪念品每天的价格。某个纪念品的价格是指购买一个该纪念品所需的金币数量,以及卖出一个该纪念品换回的金币数量。 每天,小伟可以进行以下两种交易无限次: 1.任选一个纪念品,若手上有足够金币,以当日价格购买该…

VMware ESXi 7.0U3q macOS Unlocker OEM BIOS 2.7 Dell HPE 联想定制版 9 月更新发布

VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 Dell HPE 联想定制版 9 月更新发布VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版 ESXi 7.0U3 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Fujitsu (富…

SQL Server 2022 RTM Cumulative Update #15 发布下载

SQL Server 2022 RTM Cumulative Update #15 发布下载SQL Server 2022 RTM Cumulative Update #15 发布下载 最新的累积更新 (CU) 下载,包含自 SQL Server 2022 RTM 发布以来的所有更新。 请访问原文链接:https://sysin.org/blog/sql-server-2022/,查看最新版。原创作品,转…

网站升级中 HTML 代码

网站升级中 HTML 代码效果如图所示:复制以下代码保存为HTML文件上传至WEB目录下直接可用。 `网站正在升级中 \3c br> html { background: linear-gradient(180deg, rgba(0, 95, 247, 1), rgba(3, 142, 240, 1)); height: 100% } \3c br> .box { text-align: center; pos…

读数据湖仓04数据架构与数据工程

数据架构与数据工程1. 大容量存储器 1.1. 几乎是到最后时刻,大容量存储器才被引入基础数据的基础设施中1.1.1. 分析人员通常不会直接在大容量存储器中进行数据分析1.1.2. 大容量存储器在基础数据中扮演的角色也特别重要,它能够在许多方面支持数据分析人员自由灵活地完成工作,…