
Splay
mhlwsk
这个作者很懒,什么都没留下…
展开
-
[BZOJ]3223文艺平衡树做题笔记
题目来源:http://www.lydsy.com/JudgeOnline/problem.php?id=3223 这题是splay区间翻转。 个人感觉splay区间翻转最有意思的地方就是可以在翻转时破坏二叉排序树的性质,因为splay的旋转操作和查找第K大时不涉及data值的大小比较,所以可以放心的翻转,而不会破坏序列值的rank。这里的rank等价于某个值在序列中的位置编号。#include原创 2016-02-15 16:24:19 · 586 阅读 · 0 评论 -
Splay学习笔记
Splay模板#include #include #include const int MAX=100010;using namespace std;struct Splay { int ch[MAX][2],f[MAX],root,cnt; int s[MAX],c[MAX],a[MAX]; int grow (int k,int fa) {原创 2016-01-30 11:15:14 · 381 阅读 · 0 评论 -
[CodeVS4655]序列终结者 做题笔记
题目来源:http://codevs.cn/problem/4655/ 不要问我为什么不写BZOJ,权限题。。。 维护max时注意负数的情况,主要的梗还是看BZOJ1500吧#include <cstdio>#include <algorithm>#include <cstring>#define lch ch[x][0]#define rch ch[x][1]const int N=原创 2016-04-02 19:12:16 · 387 阅读 · 0 评论 -
[BZOJ1500]维修数列 做题笔记
题目来源:http://www.lydsy.com/JudgeOnline/problem.php?id=1500 自己做这题的一个非常有意思的收获,就是pushup和pushdown千万不能忽略“0”。一般我们会把不存在的孩子的id定为0,这里称之为void好了,按理来说这个void应该是个垃圾箱,扔进去的数据都会被吃掉。但是在pushdown时如果把不和谐的值扔了进去,pushup时是会从里面原创 2016-03-20 22:52:51 · 740 阅读 · 0 评论 -
[BZOJ1861]书架 做题笔记
题目来源:http://www.lydsy.com/JudgeOnline/problem.php?id=1861这题是splay维护区间。 既然是维护区间,那么存在splay里的值就不一定要满足二叉排序树的”左<中<右”的性质,此时要维护某个值在序列里的位置,可以维护一个pos数组,代表某个值在splay中的位置,把这个结点转到根,输出左子树的大小即为它在序列中前面书的数量。 insert好说原创 2016-03-20 22:44:06 · 631 阅读 · 0 评论 -
[BZOJ][HNOI2004]宠物收养所
题目来源:http://www.lydsy.com/JudgeOnline/problem.php?id=1208 这是一份极其“优美”的代码,本来以为附带大常数,结果和hzwer的跑的一样快。。。虽然代码本身确实比较差#include <cstdio>#include <cstring>#include <algorithm>#define lch ch[x][0]#define rch原创 2016-03-16 15:53:32 · 496 阅读 · 0 评论 -
[BZOJ1588]营业额统计 做题笔记
题目来源:http://www.lydsy.com/JudgeOnline/problem.php?id=1588 这题可以说是简化版的BZOJ1208,注意取绝对值。 findval用来找小于等于x的最大的值的位置#include <cstdio>#include <cstring>#include <algorithm>#define lch ch[x][0]#define rch原创 2016-03-20 22:23:30 · 519 阅读 · 0 评论 -
[BZOJ]2733永无乡 做题笔记
题目来源:http://www.lydsy.com/JudgeOnline/problem.php?id=2733 这题是Splay启发式合并。 启发式合并,感觉也像是一种暴力,把小的一堆拆开强行放到大的一堆里面。。 使用并查集来维护两个结点是否位于一颗子树上。#include <iostream>#include <algorithm>#include <cstdio>#include原创 2016-02-17 17:28:18 · 668 阅读 · 0 评论 -
[BZOJ1503]郁闷的出纳员 做题笔记
题目来源:http://www.lydsy.com/JudgeOnline/problem.php?id=15031、首先,维护一个全局变量del,表示全局加多少。插入时要减去del,查找时要加上del,仔细领会一下。 2、删除时,找到工资比最低限小的工资最高的工人,把他旋转到根,然后删除他和左子树! 3、这题的查找是第K大,而不是第K小,要注意第K大的写法。 4、坑!这题说如果一个工人的初始原创 2016-03-15 23:55:35 · 456 阅读 · 0 评论 -
[BZOJ]1269文本编辑器 做题笔记
感觉这题出的真心不错,splay可以过,rope可以过,块状链表也可以过#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <map>using namespace std;const int MAX=5000000;int N,val;char ch[20],s[500原创 2016-02-16 11:22:07 · 455 阅读 · 0 评论