(带权)并查集
Anxdada
多读书多看报, 少吃零食多睡觉
展开
-
2017 ACM/ICPC 新疆赛区 I 题 A Possible Tree 【带权并查集】
传送门 题意:给定一棵带权树的形态, 但是并不知道每天条边的具体权重. 然后给m个信息, 信息格式为u v val, 表示在树上u 到 v 的路径上经过的边的权重的异或和为val, 问前面最多有多少个信息是不冲突的.思路:首先很明显的我们要维护一系列不知道的信息, 看冲不冲突的那就是带权并查集没跑了, 此时r[v] 表示v到这棵树的根节点(虽然题目没给, 但是我们可以假设一个)的路径异或和, 那么原创 2018-04-08 21:26:28 · 651 阅读 · 0 评论 -
UVALive - 4487 && HDU3234 && UVA12232 【带权并查集】 非常好的一道题!!!
传送门 首先说下这道题真的是带权并查集中的神题, 做完这道题你会对带权并查集的理解更进一步, 比食物链那道题经典多了…. 所以不会带权并查集的建议先去学学后在做这道题…题意: 这里有n个数a0, …., an-1, 但是你不知道它们具体的值, 接下来会给你一些信息和询问, I p v 表示信息a[p] = v; I p q v 表示a[p] ^ a[q] = v; Q k p1 p2 …原创 2018-04-08 21:11:54 · 209 阅读 · 0 评论 -
POJ 1733 Parity game 【带权并查集】
传送门 // 题意: 有一串长度为len的01串, 有n个说法, 每次描述从[l, r]中1的个数的奇偶, 然后问最多可以满足前面几个说法.思路: 这一类是非常经典的带权并查集题型, 因为我们可以用类似前缀的方法将题描述的改成sum[r] - sum[l-1], 即我们又可以将[l, r] 转换成(l-1, r], 从而可以找到两个区间之间的联系, 然后我们设一个r数组代表它与当前这个根之间的1的原创 2018-03-02 16:35:39 · 252 阅读 · 0 评论 -
ZOJ 3261 Connections in Galaxy War 【并查集 + 离线逆向处理】好题!!
传送门 // 题意: 给定一幅(n, m) 图, 每个点有点权, 然后有一些询问 destroy a b 表示摧毁a与b直接相连的边, 保证删除之前这两个点之间一定有边 query a 询问a可以到达的点中点权最大的且比a大, 如果有多种可能输出编号较小的. 没有输出-1.思路:这道题的还是一个比较中规中矩的并查集, 一看到删边,我们想要想到逆向处理, 即倒着回到询问, 然后遇到删边的表示这两原创 2018-03-02 16:24:00 · 277 阅读 · 0 评论 -
HDU 3038 How Many Answers Are Wrong【带权并查集】
传送门 // 题意 : 有n个数, 有m次说法, 每次a b c 表示说下标从sigma[a, b] = c, 然后问这m次说法中有几次是矛盾的.思路: 首先我们明白这类题就是在询问同一个集合之间的关系与已知的是不是矛盾的. 所以很自然的想到带权并查集. 其次就是大概是个前缀的思想, a b c 代表sum[b] - sum[a-1] = c, 也就是rank值我们可以定义为b比a-1高c...原创 2018-02-27 19:20:16 · 219 阅读 · 0 评论 -
hihoCoder 1515 分数调查 【带权并查集】
传送门 // 题意: 在某次学校的测验后没有公布成绩, 但是有一些消息传出, 格式为 a b c 表示a同学比b同学的分高c分 , 然后现在给出q个询问, 每次询问a同学比b同学的分高多少.思路: 比较明显的带权并查集了, 我们的rank数组维护的就是集合内的点比根节点的分高多少了. 那么路径压缩可以写为 : rank[x] += rank[tmp]; // tmp为x的父亲.那么Un...原创 2018-02-27 16:52:48 · 406 阅读 · 0 评论 -
POJ 1182 食物链 【带权并查集】
传送门 不好意思呀, 这篇博客我就是转载的, 也就是这位大神的. 大家还是请看他的解释吧, 非常清楚易懂 …. 也可以当做是带权并查集的学习. 我觉得带权并查集就是要另开一个数组去记录当前这个点和根节点的关系, 然后还要推导路径压缩时的方程转移, 以及Un时的注意点, 注意到这些的话也就简单了吧? AC Codeconst int maxn = 5e4+5;int fa[maxn...转载 2018-02-27 16:24:15 · 221 阅读 · 0 评论 -
HDU 1272 小希的迷宫 【并查集好题】
传送门 // 题意: 问给定的一幅图是否任意两点之间有且仅有一条路径.思路: 首先一种比较笨的方法就是先并查集维护联通性, 然后用dfs判断图是否有环, 比较麻烦, 但是也能过., 当然最好的方法就是用并查集也可以判环, 当然你的并查集是用了启发式合并的, 所以我们就有每个点的所在集合的size, 图中有环是什么情况了, 也就是某个点的size或翻一倍, 也就是最终的点的size不可能刚好等...原创 2018-02-27 11:36:35 · 472 阅读 · 0 评论 -
并查集板子
为了复杂度的保证, 我们引入了压缩路径和启发式合并, 引入rank机制. 也就是尽量让size小的向大的上面并…. rank值为它的size大小….const int maxn = 1e5 + 5;int fa[maxn], r[maxn];int n;void init() { for(int i = 1 ; i<= n ; i++){ fa[i] ...原创 2018-02-27 11:22:30 · 366 阅读 · 0 评论 -
牛客挑战赛 14 E 题 无效位置 【线性基 + 并查集 + 逆向思维】 好题!
传送门 题目大意: 给一个1-base数组{a},有N次操作,每次操作会使一个位置无效。一个区间的权值定义为这个区间里选出一些数的异或和的最大值。求在每次操作前,所有不包含无效位置的区间的权值的最大值思路: 首先我们应该想n个数中选择一些数异或起来最大怎么做? 这个用线性基可以做到.(不懂的自行百度), 在就是我们对于一个无效位置时很难控制我们在选的时候不选它, 所以我们逆向思考....原创 2018-07-31 16:54:23 · 234 阅读 · 0 评论