并查集
consult_
这个作者很懒,什么都没留下…
展开
-
237. 程序自动分析 (离散化+并查集)
链接 题目描述: 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。 例如,一个问题中的约束条件为:x1=x2,x2=x3,x3=x4,x1≠x4,这些约束条件...原创 2020-04-28 12:27:28 · 173 阅读 · 0 评论 -
238. 银河英雄传说 (带权并查集)
P1196 [NOI2002]银河英雄传说 基本上还是带权并查集的模板,主要在于画图模拟理解本质思想。 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N = 3e4+7; int p[N]; int d[N]; // d[x] 是...原创 2020-04-28 09:55:13 · 183 阅读 · 0 评论 -
239. 奇偶游戏(带权并查集)
POJ (貌似不支持c++11和万能头) AcWing (都支持) 奇偶游戏 1、当区间 [a,b] 内有奇数个1,那么前缀和S[b] - S[a-1] 为奇数,意味着S[b]与S[a-1]奇偶性不同。(可用其坐标代替前缀和表示相对关系) 2、当区间 [a,b] 内有偶数个1,那么前缀和S[b] - S[a-1] 为偶数,意味着S[b] 与S[a-1] 奇偶性相同。 前缀和分为两类——奇数、偶数...原创 2020-04-28 01:05:24 · 484 阅读 · 0 评论 -
1250. 格子游戏 (降维并查集)
格子游戏 裸并查集 二维坐标一维化 :x*n + y (x,y均从0开始,即从0开始给每个点编号) 当开始的点与下一个点在同一个集合内,就是已经形成环。 #include<iostream> using namespace std; int p[40010]; int n,m; int find(int x){ if(p[x] !=x) p[x] = find(p[x]); re...原创 2020-04-27 14:01:01 · 239 阅读 · 0 评论 -
P2024 [NOI2001]食物链 (带权并查集)
食物链 带权并查集,通过维护结点与根节点的距离 (代表相对关系),查询集合内点的关系; #include<iostream> using namespace std; int p[50010]; int d[50010]; //到当前集合的根节点的距离 int find(int x){ if(p[x] !=x) { int r = find(p[x]); d[x] +=...原创 2020-04-27 12:48:43 · 255 阅读 · 0 评论