随笔分类 -  8数据结构

摘要:用途 平衡树(可实现区间翻转) 原理 和treap一样,中序遍历表示权值的顺序,并且每个点有一个随机的附加值,形成一个堆来保证复杂度 但是不旋转,所有操作通过split和merge实现 分为两种split:按权值和按排名 代码 luogu3369 普通平衡树 阅读全文
posted @ 2019-04-13 09:33 Ressed 阅读(282) 评论(0) 推荐(0)
摘要:用途 可在log复杂度合并的堆 性质 每个节点有一个距离,具体定义我不知道 1.满足堆的性质 2.左子节点距离>=右子节点 3.节点距离=右子节点距离加1 实现 按照以上的性质实现merge(x,y),先选出x,y中比较大的那个(大根堆为例),再拿它的右儿子和另一个去merge,如果merge出来不 阅读全文
posted @ 2019-03-06 20:27 Ressed 阅读(161) 评论(0) 推荐(0)
摘要:做法以后再补,先写一些注意事项。 做法以后也不补了,直接看这个吧。https://www.cnblogs.com/candy99/p/6271344.html 1.rotate其实是最容易写错的地方(对于丝毫没有掌握splay蒟蒻我来说),一定要仔细检查 2.splay之前需要先从根开始往下push 阅读全文
posted @ 2018-09-06 22:37 Ressed 阅读(213) 评论(0) 推荐(0)
摘要:先膜黑科技讲义 - Magolor orz 基础 设lowbit(x)表示的是把x的二进制只留下最低一位的1,然后lowbit(x)=x&(-x) (我也不知道为什么) 设c[x]表示从i往前一共lowbit(x)个数的和,那么x-lowbit(x)就是c[x]表示的范围的前一个数。 然后可以得到c 阅读全文
posted @ 2018-08-25 22:20 Ressed 阅读(238) 评论(0) 推荐(0)
摘要:用途 我想把一个本来是线性的东西放到树上做,维护路径或者是子树的各种性质,那就用树剖呗 它可以套线段树、树状数组、ST表(以及其他我不知道的) 做法 我们考虑把树分成一条条链,然后对每条链维护我们的数据结构(线段树等)。对于两点间路径的询问,只要把路径拆成好几条链统计答案就可以了 然后为了保证链数是 阅读全文
posted @ 2018-08-01 22:22 Ressed 阅读(213) 评论(0) 推荐(0)