这么简单的东西我现在才学,血亏... on tree大家都能翻译过来。至于dsu,大概就是并查集的意思吧。 但是这并不代表并查集上树了,只是代表用到了启发式合并的思想。 进入正题: 我们有一颗树,有对于子树的询问。这种题暴力就是遍历每个节点的子树中的所有信息暴力统计出来更新答案,然后消除该节点的贡献 ...
分类:
其他好文 时间:
2020-06-24 22:00:15
阅读次数:
46
为什么以它为例,因为这个最水,LCA唯一黄题。 首先做两道并查集的练习(估计已经忘光了)。简单来说并查集就是认爸爸找爸爸的算法。先根据线索理认爸爸,然后查询阶段如果发现他们的爸爸相同,那就是联通一家的,不同就不是一家的。 两道简单例题 P1551 亲戚 P1536 村村通 以P1551 亲戚为例 题 ...
分类:
编程语言 时间:
2020-06-24 20:14:58
阅读次数:
70
题意:有一个矩形,有$k$个警报器,警报器所在半径$r$内不能走,问是否能从左上角走到右下角. 题解:用并查集将所有相交的圆合并,那么不能走的情况如下图所示 所以最后查询判断一下即可. 代码: #include <iostream> #include <cstdio> #include <cstri ...
分类:
其他好文 时间:
2020-06-22 15:08:03
阅读次数:
74
虽然思路很简单是裸的并查集,但是代码要注意细节,我在写的时候就忘了写判断语句 if(af != bf) f[bf] = a; #include <iostream> #include <cstdio> using namespace std; const int maxn = 1e6+50; int ...
分类:
其他好文 时间:
2020-06-20 13:35:37
阅读次数:
89
本文参考了【算法】并查集(Disjoint Set)和并查集详解 并查集原理 并查集是一种用于处理不相交集合之间合并问题的数据结构,例如求连通子图、判断是否存在环、求最小生成树等。 以判断图中是否有环为例,下图是一个无向图。 graph TB; A B A C A D C D C E 首先把每一个顶 ...
分类:
其他好文 时间:
2020-06-17 20:10:17
阅读次数:
53
题目是一颗生成树,所以路径唯一 树上只有两种颜色,如果客人在经过的路径上有自己喜欢的颜色,则输出 1,否则输出 0 可以用并查集来把相同的颜色合并起来。 \(a,b\) 颜色相同,\(col[a]!=c\) 路上全是客人不喜欢的颜色,输出 0 \(a,b\) 颜色相同,\(col[a]==c\) , ...
分类:
其他好文 时间:
2020-06-17 09:15:59
阅读次数:
54
就是个回滚莫队和带权可删减并查集板子 LCT?雾 这板子还没整理过,就顺手写下吧.... 可删除并查集 其实实质和原本并查集差不多就加了一个虚点的概念 为什么要增加虚点呢? 这就是删除操作的本质 (这里用ha[i]=cnt 代表i节点对应的虚点为cnt) 删除,首先把所有与这个点 i(虚点cnt)有 ...
分类:
其他好文 时间:
2020-06-15 13:58:06
阅读次数:
53
地址 https://www.acwing.com/problem/content/description/839/ 给定一个包含n个点(编号为1~n)的无向图,初始时图中没有边。 现在要进行m个操作,操作共有三种: “C a b”,在点a和点b之间连一条边,a和b可能相等; “Q1 a b”,询问 ...
地址 https://www.acwing.com/problem/content/description/259/ S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为1~N。 他们之间的关系自然也极不和谐。 很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。 我们用“怨气值”(一个 ...
import java.util.HashMap;import java.util.List;import java.util.Stack;/** * 并查集 * <p> * 1)有若干个样本a、b、c、d,假设类型是V * 2)在并查集中最开始认为每个样本都在单独的集合里 * 3)用户可以在任何时 ...
分类:
其他好文 时间:
2020-06-14 10:52:46
阅读次数:
55