2021.08.03 BZOJ 疯狂的馒头(并查集) 疯狂的馒头 - 题目 - 黑暗爆炸OJ (darkbzoj.tk) 重点: 1.并查集的神奇运用 2.离线化 题意: 给一个长为n的序列,进行m次操作,每次将一个区间修改为同一个数,之后要求输出每个位置的值. 分析: 用并查集把已经染过色的馒头跳过. 代码如下: (来自他人) #include <cstdio> #include <cstring> #include <iostream> #include <a…
4月的时候在luogu上做过 白雪皑皑 这道题,当时一遍AC可高兴了qwq,后来去了个厕所,路上忽然发现自己的做法是错的qwq...然后就咕咕了qwq 今天看到了 疯狂的馒头 ,发现一毛一样OvO...还是好好做一下吧QWQ 先上个错误代码(虽然BZOJ和Luogu都A了) // luogu-judger-enable-o2 #include<cstdio> #include<iostream> #define R register int #define getchar() *S…
BZOJ 倒序处理,就是并查集傻题了.. 并查集就是确定下一个未染色位置的,直接跳到那个位置染.然而我越想越麻烦=-= 以为有线性的做法,发现还是要并查集.. 数据随机线段树也能过去. //18400kb 2520ms #include <cstdio> #include <algorithm> typedef long long LL; const int N=1e6+5; int fa[N],col[N]; char OUT[N*10],*O=OUT; inline int F…
Input 第一行四个正整数N,M,p,q Output 一共输出N行,第i行表示第i个馒头的最终颜色(如果最终颜色是白色就输出0). Sample Input 4 3 2 4 Sample Output 2 2 3 0 HINT       [分析] 想要不带log,就从后往前做,每个点只染色一次,用神奇的并查集维护即可.   #include<cstdio> #include<cstdlib> #include<cstring> #include<iostre…
题目链接 思路:因为每次染色都会将某些馒头的颜色彻底更改,所以每个馒头的最终的颜色其实是由最后一次染色决定的,那么我们只考虑最后一次染色即可.对此,我们可以从后往前倒着染色,当目前的染色区间中存在白色馒头时,就将其染成当前的颜色,对于已经染过色的馒头则不处理,因为当前这一次染色已经不是其最后一次染色了,其最终颜色已经确定了. 对以上思路,考虑用经过路径压缩优化的并查集来维护在每个馒头右侧的.距离最近的.未染色的馒头的位置,以减小时间复杂度. 总时间复杂度O(m+n). 代码: #include<…
题意:懒得写了有空再补上 链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2054 离线从后往前做,并查集维护下一个没染色的就可以啦- #include<bits/stdc++.h> using namespace std; ; long long n, m, p, q; int fa[MAXN], color[MAXN]; template <typename tn> void read (tn & a) { tn x…
2021.08.03 P1197 星球大战(并查集) [P1197 JSOI2008]星球大战 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.可以离线处理.把在线变为离线. 题意: 有n个点,m条边,有k次操作,每次删去一个点,求每次操作后,还有几个连通块(在同一个并查集中视为是一个连通块). 分析: 先求出k次操作之后有几个连通块,每次加边,如果不在同一个连通块中,就--ans. 代码如下: #include<bits/stdc++.h> using name…
/* bzoj 3674: 可持久化并查集加强版 http://www.lydsy.com/JudgeOnline/problem.php?id=3674 用可持久化线段树维护可持久化数组从而实现可持久化并查集 可持久化线段树+并查集+路径压缩+读入优化 */ #include <cstdio> #include <algorithm> using namespace std; ; int root_fa[Nmax]; inline int read() { ;char ch=ge…
/* bzoj 3674: 可持久化并查集加强版 http://www.lydsy.com/JudgeOnline/problem.php?id=3674 用可持久化线段树维护可持久化数组从而实现可持久化并查集 可持久化线段树+并查集+按秩合并+读入优化 */ #include <cstdio> #include <algorithm> using namespace std; ; int root_fa[Nmax],root_rankk[Nmax]; inline int rea…
Description Description:自从zkysb出了可持久化并查集后……hzwer:乱写能AC,暴力踩标程KuribohG:我不路径压缩就过了!ndsf:暴力就可以轻松虐!zky:…… n个集合 m个操作操作:1 a b 合并a,b所在集合2 k 回到第k次操作之后的状态(查询算作操作)3 a b 询问a,b是否属于同一集合,是则输出1否则输出0请注意本题采用强制在线,所给的a,b,k均经过加密,加密方法为x = x xor lastans,lastans的初始值为00<n,m<…