数据结构
LittleRewriter
这个作者很懒,什么都没留下…
展开
-
平衡树学习笔记(1) BST
BST,二叉排序树。这个东西应该算是联赛算法?然而我一直没有学orz。 于是我就调了一天。。真菜啊我 BST的原理很简单,保证中序遍历是有序的,我们称之为BST性质。存储为了方便之后的操作,这里我们用结构体来实现struct node{ int son[2], fa, size, val; //son[0]为左儿子,son[1] 为右儿子}a[100003];遍历inline void原创 2017-12-23 18:04:47 · 335 阅读 · 0 评论 -
分块(一) 分块的思想与基础功能实现
其实分块是什么东西很清楚的。 一个数列进行操作是O(mn)O(mn)的,那么每n√\sqrt n个分成一段,共分成n√\sqrt n段,然后我们操作时,对于在一段内的直接单点暴力修改,跨段部分按段转移,这样每次操作复杂度就降成了O(n√)O( \sqrt n)。 非常简单的思想,糟心的是如何实现。建块首先我们先求出块的数目bct = (int)sqrt(n) 然后用block数组记录某一个元素原创 2017-12-17 17:13:32 · 1003 阅读 · 0 评论 -
并查集的删除操作
有一类删除叫做惰性删除,其特点是,这个点仍然在集合中但不去统计它。 对于并查集,一般来说想要实现删除是有些困难的,不过如果用一些黑科技就会非常简洁。 首先先引入按秩合并并查集的概念。用路径压缩的并查集,复杂度虽然是O(nα(n))O(n \alpha (n)),但是会破坏原本的结构,这是比较令人不爽的。 但是朴素的并查集在最坏的情况下查询会被卡成O(n)O(n),这是无法接受的慢。所以我们需原创 2018-01-13 09:37:11 · 2514 阅读 · 0 评论