随笔分类 - (数据结构)
摘要:BST就是二叉检索树,或者是二叉排序树,或者叫二叉搜索树等等。 BST的平衡问题可以去学习AVL树或者Treap或者Splay这些平衡树。 BST的一些高级应用: 1,求BST中比k小的数的个数: 只需在BST上面多维护值size,表示当前这个节点的子树的点的个数。 伪代码如下: 1 ...
阅读全文
摘要:队列和栈是很常见的应用,大部分算法中都能见到他们的影子。 而单纯的队列和栈经常不能满足需求,所以需要一些很神奇的队列和栈的扩展。 其中最出名的应该是优先队列吧我觉得,然后还有两种比较小众的扩展就是单调队列和单调栈。 先来看一个问题,给一个长度为N的数列,a1,a2。。。aN,然后给一个ki...
阅读全文
摘要:主席树(Chair Tree),一个神奇的数据结构。 实质上是函数式的线段树,或者可持久化的线段树。可持久化这个还比较好理解,Persistent Data Structures,看一下以上这篇文章就差不多明白为啥叫可持久化的的了。但是恕我太弱,对函数式编程实在理解不了多少,所以为啥是函数式的...
阅读全文
摘要:这是按照那位大神文章里的分类,其实我觉得这一类问题和区间更新并没有太大的区别,就是维护的值不同了而已。例题: POJ 3667 题解请单击。 HDU 3308 题解请单击。 HDU 3397 题解请单击。
阅读全文
摘要:这里用HDU的1542题作为例子,一个经典的扫描线题目,计算矩形并的和。 首先介绍扫描线,就是一根假想的线,从左到右的一条竖线扫描过去。 扫描线可以用来填充多边形,具体请看 http://blog.csdn.net/orbit/article/details/7368996 写的很好。 然...
阅读全文
摘要:就像那个大神说的,区间更新算是一个坎吧。 其实就是延迟标记。平时如果我们更新一个区间的话,从上往下都更新一遍,但是那样会很慢,所以直接给这个区间做个标记,表示有更新,那么当下一次询问或更新 这个区间的一部分时,再把这个区间标记取消,并且更新他的子集。 例题: HDU 1698 题解请单击。...
阅读全文
摘要:线段树(segment tree),一种二叉搜索树。比较常用。 就像这样。 推荐直接看http://wenku.baidu.com/view/94a8c01959eef8c75fbfb3d4.html (杭电的大神写的,十分推荐,特别棒。)例题:HDU 1166HDU 1754HDU 139...
阅读全文

浙公网安备 33010602011771号