题面传送门 复出的第一道题.. md就遇到坑了.. 简单来说就是可持久化线段树+启发式合并啊.. 感觉启发式合并好神奇好想学 每一次建边就暴力合并,每一个节点维护从根到它的权值线段树 按照题面的话最省空间的做法就是垃圾回收,但是实在是太慢了.. 而且这题有坑,题面说的是多组数据其实只有一组 而且是$ ...
分类:
其他好文 时间:
2016-12-06 22:40:10
阅读次数:
272
这个题……感觉离线和在线的代码难度差不多(pb_ds不要说话)。 离线的话,就是把所有询问按照w排个序,然后一边Kruskal+平衡树启发式合并一边回答询问就好了。 在线也不难写。首先Kruskal重构树(这个Kruskal重构树是不按秩合并还要添虚点的那种……),那么每个点可以到达的点一定在某个子 ...
分类:
其他好文 时间:
2016-11-12 19:17:23
阅读次数:
333
[HNOI2009]梦幻布丁 Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. Input 第一行给出N,M表示布丁的个数和好友的操作次数. 第二行N个数A1,A2 ...
分类:
其他好文 时间:
2016-11-05 20:48:05
阅读次数:
181
题目链接:http://poj.org/problem?id=1703 题意:有n个人分别属于两个团伙,接下来m组形如 ch, x, y的数据,ch为“D"表示 x, y属于不同的团伙,ch为"A"表示询问x,y书否属于同一个团伙; 解法1:我们可以用jion(x, y)属于同一个团伙,jion(x ...
分类:
其他好文 时间:
2016-10-28 20:37:37
阅读次数:
229
传送门 名字起得很高端实际上很简单的算法hhh 启发式合并 简单讲就是一些合并一堆队列的题可以用启发式合并,或者说这是一个思想。每次把小的合并到大的部分,均摊复杂度$O(MlogN)$。 ...
分类:
其他好文 时间:
2016-10-25 14:33:35
阅读次数:
170
给n组操作,每组操作形式为x y p。 当p为1时,如果第x变量和第y个变量可以相等,则输出YES,并限制他们相等;否则输出NO,并忽略此次操作。 当p为0时,如果第x变量和第y个变量可以不相等,则输出YES,并限制他们不相等 ;否则输出NO,并忽略此次操作。 Input Output Input示 ...
分类:
其他好文 时间:
2016-09-17 12:06:38
阅读次数:
318
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1811 给你一棵树,每个节点有一个颜色。问删除一条边形成两棵子树,两棵子树有多少种颜色是有相同的。 启发式合并,小的合并到大的中。类似的题目有http://codeforces.com/co ...
分类:
其他好文 时间:
2016-09-14 15:12:48
阅读次数:
179
Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色 ...
分类:
其他好文 时间:
2016-09-13 20:34:06
阅读次数:
203
题目链接:点击打开链接
思路:我们要求叶子结点的值相差最小, 那么这是一个大小关系, 我们可以维护一棵平衡树, 这样, 对于每一个数, 和他相差最小的情况只能是他相邻左边或右边。
但是如果开n棵平衡树, 复杂度高达n^2logn,还不如n^2暴力来的快。 我们可以采用一种叫做: 启发式合并 的技巧。 每次将一棵比较小的树合并到一棵比较大的树上。 使得复杂度达到nlogn, 证明也很简单:考...
分类:
其他好文 时间:
2016-08-23 22:08:00
阅读次数:
137
这个对数字建二进制trie,然后启发式合并,最重要的是Push_up()操作和Merge()操作,解决了复杂度的问题。 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 co ...
分类:
其他好文 时间:
2016-08-19 15:04:52
阅读次数:
399