文章目录
- 前言
- 普通平衡树
- 文艺平衡树
- 郁闷的出纳员
- 书架
- 宠物收养场
- 机械排序
- 千山鸟飞绝
- 总结
前言
专门刷了一天半的平衡树 (附带划水OvO)
使用的是蜜汁常数的splay
感觉对平衡树的理解还是有帮助的
一些较为常规的平衡树的题应该是差不多了
更正之前刚学的观点!
平衡树当然在维护排名上很有优势
但它最强大的功能应该是区间问题
还有一些对于整个集合改变的乱七八糟的神奇标记(见:千山鸟飞绝)
一道道说一说吧
普通平衡树
传送门
怎么能不水一发模板呢
(连打了三天后终于能二十分钟打完一次A了qwq)
当然还有一个强化版模板
文艺平衡树
传送门
这题我初看根本没有看出来跟平衡树有个毛线关系
看了好几篇题解才明白了思想
就是按数列顺序建一棵树,然后每次把区间内的提到一起打个翻转标记
标记是精髓 (线段树频频点头)
注意不要忘了pushdown!(线段树继续点头)
郁闷的出纳员
传送门
这题就好办不少了
经典的维护排名问题
关键是离线处理一个对整体员工工资调整的累加器
书架
传送门
这个的操作还是比较灵活的
get:不会就提到根试试
放到顶部就是把s提到根后左子树全接到后继上
底部反过来同理
与前一本(后一本)交换就直接提到根再与前驱(后继)交换信息就可以了
宠物收养场
传送门
比较裸了
这也紫我实在没话说
题解好多说建两棵平衡树
但我觉得减一棵足够了啊
记录一下当前是狗多还是人多就行了
爱护环境,节约树木
机械排序
传送门
本题的关键是相同编号按初始顺序选择
所以预处理出来下一个相同编号的位置就能确定每次要翻转的东西
再记录一下这些东西对应的splay树上的编号
就变成文艺平衡树了
千山鸟飞绝
传送门
作为一道毕业题 (xs,根本还毕不了业) 可以说是不错了
把坐标离散化一下
然后对每个坐标建一课树
更新对树里面的用标记,对于根和新加入的直接暴力更新就行
这个不能算自己的蜜汁设定导致我写出了各种各样的bug
最后写的怪东西常数过大,变成了吸氧代码
开始归咎于splay的常数
总结
总的来说,我的平衡树还差得远呢
但至少可以说会一点了
NOIP就是考平衡树应该也会裸一点吧(祈祷ing)
继续加油哇!OvO