<<<<<<<平衡树>>>>>>>
文章平均质量分 82
I_AM_HelloWord
爱好编程信息学
展开
-
登峰造极之树——Splay伸展树
这个splay也是个很有趣的数据结构,它是为了平衡权值二叉树而提出的,却最终不是以权值二叉平衡树的形式被广泛使用,而是去维护序列的区间修改(某些线段树实现不了的区间修改,如区间翻转等),很多萌新在初学splay时都看的是平衡权值二叉树形式的,所以突然接触区间翻转等问题会有困难。这里我就不讲splay的权值平衡树的形式了(网上资料很多),而是主要讲一讲怎么去理解splay去维护区间(几乎没有人解释的原创 2017-08-28 10:04:57 · 1333 阅读 · 0 评论 -
NOI2005 维护数列
NOI2005 维护数列tags :【Splay】,【BZOJ1500】,【洛谷2042】在线评测地址:洛谷,大视野题目描述1500: [NOI2005]维修数列Time Limit: 10 Sec Memory Limit: 64 MBDescriptionInput输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目。第2行包含N个数字,原创 2017-10-10 18:49:29 · 628 阅读 · 0 评论 -
登峰造极之树——Size_Blanced_Tree萌新入门教程
先前的博文:旧版SBT教程 洛谷P3369是道模板题,我在洛谷P3369中详细的写了一个题解,这里就直接copy来了。当时写的时候把zig,zag表示的旋转方向弄反了,大家将就这看吧。大家自己打的时候就把zig改成left_rotate,把zag改成right_rotate。 184ms / 3.15MB 代码:2.61KB C++11 时空以及编程复杂度都还好吧= =,大原创 2017-08-28 09:42:05 · 524 阅读 · 0 评论 -
登峰造极之树——平衡树
在所有的平衡树中,为陈启峰提出的SBT最富盛名,并且最快最方便。 下面就是我对此的学习过程。 首先要了解二叉排序树,然后要明白了旋转在平衡过程中的重要地位。 有左旋和右旋之分,下面以右旋为例,左旋对称即可: 以上为原树,经过右旋后得到: 于是我们可以很清楚的得到右旋代码:void RR(int &t){ int k=left[t]; left[t]=right[k];原创 2016-05-14 19:30:33 · 398 阅读 · 0 评论