Splay
文章平均质量分 64
Hexrt
南昌航空大学软件学院,ACMerRetired。
求知若渴,虚心若愚。
傲慢与偏见才是进步的最大阻碍。
展开
-
P4219 [BJOI2014]大融合【LCT】维护子树信息
P4219 [BJOI2014]大融合【LCT】维护子树信息 维护子树信息 这里用个 sz2sz2sz2 维护虚子树节点数量 也就是非实子树的数量原创 2021-11-30 21:17:33 · 106 阅读 · 0 评论 -
P1198 [JSOI2008]最大数
传送门 分析 查询数列倒数LLL个数的最大值 添加一个值到数列末尾 区间最值,动态添加,SplaySplaySplay不是也能干这些事情吗 这里无非就是为了要维护一个最大值而已,记得预插入两个哨兵(最小值和最大值) 那么请看 push_uppush\_uppush_up 函数,此题得解 行! 那就用SplaySplaySplay 代码 //P1198 /* @Author: YooQ */ #include <bits/stdc++.h> using namespace std; #de原创 2021-09-14 18:56:54 · 92 阅读 · 0 评论 -
P1486 [NOI2004] 郁闷的出纳员【Splay】
传送门 第一行有两个整数 nnn 和 min\minmin。nnn 表示下面有多少条命令,min\minmin 表示工资下界。 接下来的 nnn 行,每行一个字符 xxx 和一个整数 kkk,表示一条命令。命令可以是以下四种之一: I kI \space kI k 新建一个工资档案,初始工资为 kkk。如果某员工的初始工资低于工资下界,他将立刻离开公司。 A kA \space kA k 把每位员工的工资加上 kkk 。 S kS \space kS&原创 2021-09-14 18:56:30 · 108 阅读 · 0 评论 -
P2234 [HNOI2002]营业额统计【Splay】
传送门 给定长度为NNN的数组,表示营业额 一天的最小波动值=min{∣该天以前某一天的营业额−该天营业额∣}一天的最小波动值 = \min\{|\text{该天以前某一天的营业额}-\text{该天营业额}|\}一天的最小波动值=min{∣该天以前某一天的营业额−该天营业额∣} 求每一天的营业额 第一天为它本身 分析 假设当前的营业额为 xxx,我们要知道以前的,小于xxx的最大值,大于xxx的最小值 这就是前驱和后继了 所以我们要动态维护前驱后继 注意,非严格前驱后继!可以等于,所以做些小变化。 详细原创 2021-09-14 18:56:23 · 177 阅读 · 0 评论 -
P3369 【模板】普通平衡树【Splay】
传送门 分析 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入 xxx 数 删除 xxx 数(若有多个相同的数,因只删除一个) 查询 xxx 数的排名(排名定义为比当前数小的数的个数 +1+1+1 ) 查询排名为 xxx 的数 求 xxx 的前驱(前驱定义为小于 xxx,且最大的数) 求 xxx 的后继(后继定义为大于 xxx,且最小的数) 行!就用Splay了,只要理解,rotate和splay,直接往上套,别管什么常数了 插入,找到xxx的前驱和后继,先旋前驱到根原创 2021-09-14 18:56:14 · 68 阅读 · 0 评论 -
P3391 【模板】文艺平衡树 【Splay】
传送门 您需要写一种数据结构(可参考题目标题),来维护一个有序数列。 其中需要提供以下操作:翻转一个区间,例如原有序序列是 [5 4 3 2 1],翻转区间是 [2,4] 的话,结果是 [5 2 3 4 1]。 分析 一道经典 SplaySplaySplay 模板题 这里介绍一下经常使用的 SplaySplaySplay 相关代码和思想 树的节点 struct Tr { #define ls son[0] #define rs son[1] int k, sz, fa, rev; int son[2原创 2021-09-14 17:33:21 · 66 阅读 · 0 评论