题意:给定一个带点权的无向图,有两种操作: 1、将两个连通分量合并。 2、查询某个连通分量里的第K大点。题解:用并查集维护连通关系,一开始建立n棵splay树,然后不断合并,查询。处理技巧: 1、每个顶点u所在的Splay就是T[find(u)]。 2、每个顶点在树中对应的节点编号就是该顶点...
分类:
其他好文 时间:
2015-02-05 20:24:24
阅读次数:
410
启发式合并就是一个简单的思想, 就是每次在合并的时候 都把 小的合并到大的里面。 可以证明这个方法在很多时候都可以把合并次数 为 n 的问题优化到 logn次。应用一) 并查集并查集的按秩合并就是记录一下每个点的size 是多大然后每次 把 size 较小的那个接到较大的上面。 但是好像并不是很常用...
分类:
其他好文 时间:
2015-01-26 15:05:29
阅读次数:
234
呃这题的Hint写着splay启发式合并……但是蒟蒻不懂T_T只好写个简单的LCT来蒙混过关,就是时间效率上差劲的很……不过能够一次AC心情也是蛮愉悦的~ 1 /************************************************************** 2 ...
分类:
其他好文 时间:
2015-01-10 12:28:58
阅读次数:
254
题目大意:给定n个目标串和m个模式串,问这m个模式串每个在多少个目标串中出现过,以及n个目标串每个以最多多少个模式串为子串
我错了……就算用fail树+set启发式合并也优化不到O(nlog^2n)……这题的数据范围相当无解啊
首先将所有名字和点名的字符串全都插进AC自动机
将每个点上开一个set记录这个点是哪些喵星人的名字的前缀
然后建立fail树 沿着fail树从下到上启发式合并
每...
分类:
其他好文 时间:
2014-12-09 09:21:35
阅读次数:
286
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1483分析:先将不同的颜色的出现位置从小到大用几条链表串起来,然后统计一下答案对于每次修改,修改一下答案即可,修改之后需要将两个颜色的链表合并就行了,但感觉似乎会TLE?以下摘录与Hzwe...
分类:
其他好文 时间:
2014-11-30 00:24:46
阅读次数:
284
题目大意:给出一串颜色,有两种操作,1.询问有多少块颜色。2.将一种颜色改变成另一种颜色。
思路:好像和染色什么的比较像,但是看了题解之后发现完全不是那么回事。
对于每一种颜色维护一个链表,然后在修改颜色的时候,暴力修改一种颜色成为另一种颜色,用启发式合并可以保证复杂度不超过O(nlogn)。但是由于是启发式合并,有可能导致你就改了反了颜色,这个时候记录一个映射,然后把修改错的记录下来...
分类:
其他好文 时间:
2014-11-28 18:21:36
阅读次数:
180
题目大意:同3545 强制在线
3545题解传送门:http://blog.csdn.net/popoqqq/article/details/40660953
强制在线没法排序 启发式合并也就用不了了
Kruskal重构树是个挺好玩的东西 可以拿来处理一些最小生成树的边权最值问题
这里我们Kruskal连边时并不直接连边 而是新建一个节点ext 将两个点所在子树都连到ext的儿子上
比如...
分类:
其他好文 时间:
2014-11-21 16:21:43
阅读次数:
252
〖程序清单〗初始化:fori:=1tondofather[i]:=i;因为每个元素属于单独的一个集合,所以每个元素以自己作为根结点。寻找根结点编号并压缩路径:functiongetfather(v:integer):integer;beginiffather[v]=vthenexit(v);fath...
分类:
其他好文 时间:
2014-11-04 09:15:44
阅读次数:
119
题目大意:给定一棵树,选定一棵子树中的一些点,薪水和不能超过m,求点的数量*子树根节点的领导能力的最大值
考虑对于每个节点,我们维护一种数据结构,在其中贪心寻找薪金小的雇佣。
每个节点暴力重建一定不行,我们考虑可并数据结构,每个节点将子节点的信息直接合并即可
可以用启发式合并的Treap,也可以用可并堆
今天特意去学了这玩应0.0 先写了左偏树 然后又写了下随机堆…… 后者速度上更快一些 ...
题目大意:给定n个布丁,每个布丁有一个颜色,多次将某种颜色的所有布丁变为另一种颜色,多次询问颜色段数
数据范围:n
链表的启发式合并0.0 一直没写明白 其实就是开个链表记录每种颜色的位置,合并时撸一遍短的链看看两边是不是长链的颜色就行
不过交换比较麻烦0.0 要开个数组记录每个数字代表的真实颜色 交换时把数组的这两个位置也交换下就可以了
注意用过的垃圾不要留在原位 size合并掉就清零 ...
分类:
其他好文 时间:
2014-10-24 14:40:30
阅读次数:
146