并查集
卡常带师
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CodeForces 1423H Virus
题目链接:https://codeforces.com/problemset/problem/1423/H这个题目,显而易见的需要可撤销并查集,然后发现,每条边有一个存在时间,我们只需要处理出这个存在时间,那么这个题目就可以使用线段树分治+可撤销并查集来维护。当然这个地方的时间与操作数量对等,而不是天数,如果是天数的话,处理询问会存在很大的麻烦,读者可以自己思考一下,但是如果这里以操作顺序为时间轴,那么就会简单很多,不会存在加边和查询的先后问题//#define LOCAL#include <.原创 2020-11-11 23:40:04 · 318 阅读 · 0 评论 -
CF1444C Team-Building 可撤销种类并查集
思路:该题很容易想到,暴力枚举子图,然后二分图判定,统计答案即可,但是复杂度太高。正难则反,我们考虑用所有方案减去不合法方案。不和法方案分为两种:- 如果一个环为奇环,并且只有一种颜色,那么所有和他构成的偏序集都是不合法的- 如果一个环奇幻,并且环内由两种颜色构成,那么由这两种颜色构成的偏序集是不合法的对于第一种情况,利用并查集可以很快的判断出来。第二种情况只需要先将图进行一些处理,先将所有相同颜色的边利用并查集构成连通块,这个时候利用的是连接相同颜色的边。然后再将连接不同颜色的边分组。.原创 2020-11-02 16:41:27 · 703 阅读 · 0 评论 -
P5787 线段树分治+可撤销并查集
题目链接:https://www.luogu.com.cn/problem/P5787解题技巧:1.对于此类在某一段时间**[L,R]**内产生贡献的非强制在线问题,我们都可以试着采用线段树分治解决//#define LOCAL#include <bits/stdc++.h>using namespace std;#define ll long long#define mem(a, b) memset(a,b,sizeof(a))#define sz(a) (int)a.s.原创 2020-10-23 21:05:48 · 260 阅读 · 0 评论 -
可撤销并查集+MST思想-Codeforces891C
可撤销并查集,采用启发式按秩合并struct Undo_Dsu{ stack <pii> st ; int fa[N] , siz[N] ; void init() { while(!st.empty()) st.pop() ; for (int i = 1 ; i <= n ; i ++) fa[i] = i , siz[i] = 1 ; } int findroot(int x) { .原创 2020-10-15 22:54:20 · 3688 阅读 · 0 评论 -
HDU - 1856 并查集,寻找最大集合元素个数
#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;int fa[10000000];int mark[10000000];int findroot(int x){ if(fa[x] == x) return x; el...原创 2018-09-26 17:31:48 · 337 阅读 · 0 评论 -
小希的迷宫 HDU - 1272(并查集判断是否成环)
#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;int fa[100005],vis[100005],flag;//flag判断是否成环int n , m;int findroot(int x){ if(fa[x] == x) ...原创 2018-09-22 15:59:50 · 225 阅读 · 0 评论
分享