
平衡树
文章平均质量分 72
ZLTJohn
这个作者很懒,什么都没留下…
展开
-
STL中的set与multiset
终于打过平衡树了!我来写写set的小科技。写得不一定完全。调用和定义首先#include<set>然后就set<struct_type> nameormultiset<数据类型> 名字不需要给set开空间的~~~进一步了解实际上set或multiset是个平衡树,只要重定义 < 就可以用来干很多事情。 每一个位置是一个迭代器,就像指针一样,迭代器支持++运算。然后要取值就要用*号,比如我们用一原创 2016-06-30 09:51:33 · 677 阅读 · 0 评论 -
[JZOJ3754]【NOI2014】魔法森林
题目大意给定N个点M条边的无向图,每条边有两个权值a与b。求一条1到n的路径使得路径经过边的最大a与最大b的和最小。无法到达输出-1。 n<=50000,m<=100000。ai,bi<=50000分析看到ai这么小,我们考虑枚举ai然后算最小b。 那么从小到大枚举ai,不断加入边,边权为bi。 用LCT维护最小生成树即可。具体的,新加入一条边(x,y),若不在同一联通块就link,在同一联原创 2017-03-03 22:52:55 · 974 阅读 · 0 评论 -
[JZOJ5044]【NOI2017模拟4.4】Sone0
题目描述有一颗n个节点的树,每个节点有编号与权值。有m次操作,每种操作都有独特的编号。 编号为1的操作,会切断当前树上存在的一条边,并新加一条边,保证操作完成后仍然是树。 编号为2的操作,会改变这颗树的根节点(初始根节点为1)。 编号为3的操作,会给树上一条路径上所有点的权值都增加x。 编号为4的操作,会对树上一条路径上点的权值信息进行轮换,如果是对j到k这条路径操作,从j走到k的遍历序列是原创 2017-04-07 10:31:40 · 1086 阅读 · 1 评论 -
[JZOJ5072]【GDOI2017第三轮模拟day1】单旋
题目描述有一颗spaly,就是只有单旋的splay,现在有5种操作:插入一个点x把最小值旋到根把最大值旋到根2之后删掉最小值3之后删掉最大值问每次操作涉及的那个点的深度,后面几个操作的深度为没旋时的深度。100%的数据满足:1<=m<=10^5;1<=key<=10^9。所有出现的关键码互不相同。任何一个非插入操作,一定保证树非空。在未执行任何操作之前,树为空。分析暴力肯定就是打一棵sp原创 2017-04-19 22:17:07 · 502 阅读 · 0 评论 -
[JZOJ5082].【GDSOI2017第三轮模拟】Informatics Training
题目描述 操作数<=300000分析首先这是一道数据结构裸题。 面对这种码农题我们需要有较清晰的思路。 下面是我打题前的思路: 大概是用splay维护h,s,关键字就是编号。然后两个set维护其他东西。 T3 set: mntr 维护每个splay的根的mn_s ,以及id ,就一个pair嘛 ntr 维护点编号 splay: vtr维护mn_h mn_s sum_h原创 2017-04-21 17:11:06 · 532 阅读 · 0 评论 -
JZOJ2724. 【3.16XJ模拟题】圆
题目描述二维坐标平面内有n个圆,第i个圆圆心在(Xi,Yi),半径为Ri,权值Vi。任何两个圆都不会相交(也不会相切),但是圆与圆之间可能存在包含关系。当我们在一个圆里面的时候,我们必须经过它的边界一次,才能走出这个圆。对于不同的两个圆A、B,如果可以从A到B且经过不超过K次边界,则称A、B是连通的。现在的问题是:对于所有的连通的一对圆(A,B),权值差的绝对值最大有多少。即找到max{ |VA –原创 2016-12-19 21:59:21 · 1317 阅读 · 0 评论 -
平衡树学习小记
总起修炼了2天,终于差不多完成基础了,数据结构都是很灵活的,不仅是应用,而且写代码也是有很多值得思考的地方。而在平衡树中,旋转是核心的核心。 先总结一下吧。先说明一些概念键值,所谓的key,我一般用val表示,就是当前点存的值。 ind(ex),引索,就是用平衡树要维护的东西,可能还用wei(ght)来表示。相当于普通序列中的下标。虚拟节点:第n+1个点,放在所有点之前,让平衡树有头;第n+2个原创 2016-06-30 09:31:07 · 1681 阅读 · 3 评论