码迷,mamicode.com
首页 >  
搜索关键字:并查集    ( 4768个结果
并查集
介绍 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define N 1000010 using namespace std; int fa[N]; int find(int x) { if(fa ...
分类:其他好文   时间:2020-01-18 20:58:56    阅读次数:77
CF891C Envy
"Link" Solution 最小生成树有两个性质: 在任意最小生成树上,任意权值的边数目是相同的; 任意最小生成树,在加完了小于某权值的边之后,图的联通性是一样的。 所以先跑一遍Kruskal,对每条边处理出加入权值比他小的边之后两端点所在的联通块。 对于每组询问用,把边按边权排序之后,并查集c ...
分类:其他好文   时间:2020-01-18 10:20:05    阅读次数:57
Luogu P3295 [SCOI2016]萌萌哒
"Link" 一个很trivial的想法是并查集暴力维护,最后的答案是$9 10^n$,$n$是最后剩下的并查集的个数。 因为每次连边的都是一段区间到另一端区间,所以我们可以二进制拆分,把并查集的每个点拆成$\log$个点,每次把要连边的区间拆成$\log$个点直接连,最后再还原。 ...
分类:其他好文   时间:2020-01-18 01:07:26    阅读次数:64
并查集的非递归路径压缩
我们知道,递归版路径压缩的实质就是在回溯过程中把沿途出现的爸爸变成兄弟,最终由N代同堂变成二代同堂。 所以我们可以利用这样的方法写出非递归路径压缩。 首先要找到根节点root,然后从当前位置出发寻找根节点,沿途得到的父亲节点father全部直接指向根节点。 如何得到沿途的父节点呢?当然是迭代啦! 1 ...
分类:其他好文   时间:2020-01-17 22:51:26    阅读次数:104
并查集
模板 LGP3367 题目描述 现在有一个并查集,你需要完成合并和查询操作。 输入格式 第一行包含两个整数$N$、$M$,表示共有$N$个元素和$M$个操作。 接下来$M$行,每行包含三个整数$Z_i$、$X_i$、$Y_i$ 当$Z_i=1$时,将$X_i$与$Y_i$所在的集合合并 当$Z_i= ...
分类:其他好文   时间:2020-01-17 10:13:57    阅读次数:78
并查集的模板写法
1 并查集: 2 #include<utility> 3 #include<iostream> 4 #include<set> 5 #include<map> 6 #include<vector> 7 #include<queue> 8 #include<cmath> 9 #include<algo ...
分类:其他好文   时间:2020-01-16 21:45:30    阅读次数:61
「SDOI2019」世界地图(并查集+kruscal)
Address "loj3112" "luogu P5360" "bzoj5531" Solution 对于 $1\leq i\leq m$,考虑分别预处理经度在 $[1,i]$,$[i,m]$ 的点的 $\text{MST}$。询问的时候合并 $[1,l 1]$ 和 $[r+1,m]$ 即可。 先 ...
分类:其他好文   时间:2020-01-15 13:50:04    阅读次数:96
luogu P3295 [SCOI2016]萌萌哒 |倍增+并查集
题目描述 一个长度为 nnn 的大数,用 S1S2S3?SnS_1S_2S_3 \cdots S_nS1?S2?S3??Sn?表示,其中 SiS_iSi? 表示数的第 iii 位, S1S_1S1? 是数的最高位。告诉你一些限制条件,每个条件表示为四个数,l1,r1,l2,r2l_1,r_1,l_2 ...
分类:其他好文   时间:2020-01-14 23:55:24    阅读次数:139
[SCOI2016]萌萌哒 解题报告
"[SCOI2016]萌萌哒" 题意 有一个长度为 $n$ 的大数, 有 $m$ 个形如 的限制, 表示区间 $[l1,r1]$ 和 $[l2,r2]$ 完全相等, 求满足这些限制的数的个数, 不能含有前导零. $(1 \le n,m \le 10^5)$ 思路 暴力 : 直接 $O(nm)$ 把相 ...
分类:其他好文   时间:2020-01-14 23:53:17    阅读次数:98
Kruskal 最小生成树
Kruskal算法: ①用并查集实现 ②构造一个只含 n 个顶点,边集为空的子图,把子图中各个顶点看成各棵树上的根结点 ③sort()排序升序,依次从边集 E 中选取一条权值最小的边,如果该条边的两个顶点分属不同的树,则把两棵树合成一棵树。若该条边的两个顶点已落在同一棵树上,跳过,取下一条权值最小的 ...
分类:其他好文   时间:2020-01-14 23:39:46    阅读次数:75
4768条   上一页 1 ... 30 31 32 33 34 ... 477 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!