题目大意:给出一个森林,每个节点都有一个权值。有若干加边操作,问两点之间路径上的第k小权值是多少。
思路:这题和COT1比较像,但是多了连接操作。这样就只能暴力合并连个树。启发式合并会保证时间复杂度不至于太大。然后就是用可持久化线段树维护一个树的信息,按照dfs序来建树,每个节点的可持久化链的参考版本就是它父亲的版本。之后利用权值线段树可区间加减的特性,用f[x] + f[y] - f[...
分类:
其他好文 时间:
2014-10-21 10:26:39
阅读次数:
265
题目大意:给定n个集合,提供三种操作:
1.合并a,b所在集合
2.回到第k次操作之后的状态
3.询问a,b是否在同一集合
可持久化并查集0.0 实现方式是用可持久化线段树实现可持久化数组维护可持久化并查集。。。
至于可持久化数组,每条路径上只有叶节点的位置的num域是有意义的,感觉无比浪费0.0 可是不这样还真没法维护0.0
合并时本来应该按照每个节点的深度之和维护,结果手残懒得写,...
分类:
其他好文 时间:
2014-10-20 19:30:18
阅读次数:
185
题目大意:给定一个长度为n的序列,求当子序列s的左端点在[a,b],右端点在[c,d]时的最大中位数
其中当序列长度为偶数时中位数定义为中间两个数中较大的那个
很难想的一道题 具体题解见 http://blog.csdn.net/acm_cxlove/article/details/8566093 说的很详细
区间处理那里 [b,c]是必选的 [a,b)和(c,d]每段取最大加和 否则re恒...
分类:
其他好文 时间:
2014-10-20 17:19:36
阅读次数:
162
题目大意:给定一棵森林,每个点有权值,提供两种操作:
1.查询两点间路径上第k小的权值
2.将两个点之间连一条边 保证连接后仍是一座森林
可持久化线段树部分同Count On A Tree 只是这道题加了个连接操作
对于连接操作我们要用到启发式合并 就是把小的那棵树暴力重建 很简单的一个操作但是可以证明是均摊O(nlogn)的
大小我用了并查集 其实记录根就可以了
此外本题的多组数据是...
分类:
其他好文 时间:
2014-10-20 13:36:39
阅读次数:
291
题目大意:给定一个数字串,多次求某个区间内有没有一个长度为k的子串
首先对字符串进行哈希 然后问题就转化成了求一个区间内有没有某个数
可持久化线段树即可 其实我觉得划分树会更快一些 可以写写
※注意事项:
1.n
2.哈希值用unsigned long long 铁则 unsigned int 会被卡掉
3.线段树那里直接x+y>>1会爆unsigned long long 转...
分类:
其他好文 时间:
2014-10-19 15:43:59
阅读次数:
228
题目大意:可修改的区间第k小
这个主席树卡了我两天。。。切掉Count On A Tree 之后我就一直认为带修改的主席树是树状数组套可持久化线段树。。。其实我被误导了。。。
尼玛带修改的主席树和可持久化线段树毛关系都木有啊!!!
那就是动态的权值线段树啊啊啊啊啊啊啊!!!
好吧这里给不明白主席树的孩纸一些简介:
1.外层树状数组
2.里层线段树
3.线段树动态开节点。仅此而...
分类:
其他好文 时间:
2014-10-15 14:06:00
阅读次数:
284
题目大意:查询树上两点之间的第k大的点权。
思路:树套树,其实是正常的树套一个可持久化线段树。因为利用权值线段树可以求区间第k大,然后再应用可持久化线段树的思想,可以做到区间减法。详见代码。
CODE:
#include
#include
#include
#include
#define MAX 100010
#define NIL (tree[0])
usin...
分类:
其他好文 时间:
2014-10-14 19:41:19
阅读次数:
153
题目大意:给定一棵树,每个节点有权值,询问两个节点路径上的权值第k小
这题很卡时间。。。
树链剖分+二分+树套树的O(nlog^4n)做法可以去死了
没有修改操作,树链剖分+二分+划分树O(nlog^3n),还是死了
我怒了,裸学了一发可持久化线段树(不看任何代码OTZ,我是怎么做到的0.0),二分+主席树,O(nlog^2n),居然还是死了!
最后发现我SB了,完全没有必要二分,直...
分类:
其他好文 时间:
2014-10-13 20:02:37
阅读次数:
373
可持久化数据结构(Persistent data structure)就是利用函数式编程的思想使其支持询问历史版本、同时充分利用它们之间的共同数据来减少时间和空间消耗。所以这里讲的可持久化线段树也叫函数式线段树(又叫主席树……因为先驱就是fotile主席Orz……)。先了解一下主席树http://s...
分类:
其他好文 时间:
2014-08-20 16:05:12
阅读次数:
205
什么是主席树可持久化数据结构(Persistent data structure)就是利用函数式编程的思想使其支持询问历史版本、同时充分利用它们之间的共同数据来减少时间和空间消耗。因此可持久化线段树也叫函数式线段树又叫主席树。可持久化数据结构在算法执行的过程中,会发现在更新一个动态集合时,需要维护其...
分类:
其他好文 时间:
2014-08-08 17:30:26
阅读次数:
354