• 2024-06-22可撤销并查集
    给定n个结点,q次询问,每次询问分为三类:1xy,将x和y两个点连通,如果已经连通则不操作。2,撤销上一次连通操作,如果全部撤销完了则不操作。3xy,询问x和y是否连通。对于每个询问3,输出结果YES或NO。提示:可销撤并查集,使用按秩合并或启发式合并,不能用路径压缩。合并时记录操作的结点
  • 2024-06-17从零开始学算法/C++/第四天
    昨天参加了百度之星,完全不会写,就写了道差分第一题根据汉诺塔层数和转移次数输出每个圆盘的位置很熟悉,刚学C语言那会儿就学了这个东西,已经忘光光了;大约第三题是求区间中位数,因为只查询一次,差分是比较合适的;大约第四题是括号匹配,WA了四个点,这玩意没写过类似的,还是知识面太窄了,刚
  • 2024-06-16C++U7-09-并查集
    并查集(DisjointSetUnion)是一种树型的数据结构,主要用于处理一些不相交集合(DisjointSets)的合并及查询问题。并查集能解决什么问题?在线游戏公会管理:应用场景:在一个大型多人在线游戏中,玩家可以创建或加入公会(公会相当于一个团队或群体)。随着时间的推移,公会可能会合并或解散。
  • 2024-06-12并查集——朋友圈,部落问题
    7-2朋友圈分数25全屏浏览切换布局作者 DS课程组单位 浙江大学某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论
  • 2024-06-10P10572 [JRKSJ R8] +1-1 题解
    样例给了我们一个很好的提示。观察样例中\(1\rightarrow4\)的路径,发现\(4\rightarrow5\)这条边走了两遍,再结合题目描述中不需要保证是简单路径的提示,我们发现:如果路径两侧分别是(\(\rightarrow\)(和)\(\rightarrow\))的话,那么中间不管怎么走都可以通过左右横跳来
  • 2024-06-09算法课程笔记——可撤销并查集
    算法课程笔记——可撤销并查集Gv
  • 2024-06-06算法课程笔记——并查集基础
    算法课程笔记——并查集基础
  • 2024-06-05题解:SP1442 CHAIN - Strange Food Chain
    双倍经验:P2024[NOI2001]食物链思路:一眼鉴定为并查集。观察题目发现有三种状态,考虑使用种类并查集(又称扩展域并查集)。既然有三种状态那么种类并查集自然也要开三倍。CODE:#include<bits/stdc++.h>usingnamespacestd;intfa[150010];intGet_Find(intx){//寻找父节点
  • 2024-05-31L2-013 红色警报(并查集)
    1.题目L2-013红色警报分数25全屏浏览切换布局作者陈越单位浙江大学战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城
  • 2024-05-31创新实训(六)
    明天中期检查,紧急把半成品大模型拉来用了。租的卡没有公网IP,用ssh的端口映射配了很久,来不及写了,回头补上交了个不带并查集路径压缩的kruskal求最小生成树大模型给出的答复如下,耗时十几秒:
  • 2024-05-2920240529刷题总结
    T1(批量式kruskal,增量式的nb应用)ABC355F.这题边权巨小。只有10。考虑从此处下手。这里考虑kruskal的过程,我们一开始的想法是,不断加权值最小的边,但是这里显然有冗余,我们没有必要一个个取吧?考虑一次把x边取完。也就是开10批,当然开并查集维护连通关系,也就是维护出这10个并查集。对于
  • 2024-05-29C130 并查集 P1197 [JSOI2008] 星球大战
    视频链接:  P1197[JSOI2008]星球大战-洛谷|计算机科学教育新生态(luogu.com.cn)//并查集#include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;constintN=400005;inth[N],from[N],to[N],ne[N],idx;voidadd(intu,intv){from[
  • 2024-05-28C129 并查集+01背包 P1455 搭配购买
    视频链接:C129并查集+01背包P1455搭配购买_哔哩哔哩_bilibili  E08【模板】背包DP01背包_哔哩哔哩_bilibiliP1455搭配购买-洛谷|计算机科学教育新生态(luogu.com.cn)//并查集+01背包#include<iostream>#include<cstring>#include<algorithm>usingname
  • 2024-05-277-4 并查集【模板】
    给出一个并查集,请完成合并和查询操作。输入格式:第一行包含两个整数N、M,表示共有N个元素和M个操作。接下来M行,每行包含三个整数Zi​、Xi​、Yi​。当Zi​=1时,将Xi​与Yi​所在的集合合并。当Zi​=2时,输出Xi​与Yi​是否在同一集合内,是的话输出Y;否则的话输出N。输出格式:
  • 2024-05-25C126 带权并查集 P1196 [NOI2002] 银河英雄传说
    视频链接:   P1196[NOI2002]银河英雄传说-洛谷|计算机科学教育新生态(luogu.com.cn)//带权并查集#include<iostream>usingnamespacestd;constintN=30005;intT;intp[N],d[N],siz[N];intfind(intx){if(p[x]==x)returnx;intt=find(p[x
  • 2024-05-22【知识点】集合与并查集
    在前几篇文章当中,我们已经讨论了许多有关数论的知识点了,因此Macw决定写几篇数据结构的文章缓一缓。(整天写数论相关的内容容易自闭(bushi))。今天我们将会围绕一个新的数据结构,并查集(DisjointSetUnion)来展开。集合与集合的常见操作在谈论到并查集的时候,首先讨论一个前置知识
  • 2024-05-20C123【模板】扩展域并查集 P1892 [BOI2003] 团伙
    视频链接:C123【模板】扩展域并查集P1892[BOI2003]团伙_哔哩哔哩_bilibili  P1892[BOI2003]团伙-洛谷|计算机科学教育新生态(luogu.com.cn)//扩展域并查集#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;intn,m,a,b,
  • 2024-05-15[ARC149D] 的题解
    思路很巧妙,首先,很明显,数轴上关于原点对称的一个点对,不论移动了多少次,都任然是对称的。再看眼数据范围,发现其实点分布的比较紧,考虑直接将所有点看做一个整体(数轴上一个线段),然后依次移动。关键的是,若这个整体横跨了原点的话,那么在原点的点就有答案了,对于剩下的部分,设在正半轴、负
  • 2024-05-14【并查集】冗余连接
    冗余连接如果两个顶点属于相同的连通分量,则说明在遍历到当前的边之前,这两个顶点之间已经连通,因此当前的边导致环出现,为附加的边,将当前的边作为答案返回PythonclassSolution:deffindRedundantConnection(self,edges:List[List[int]])->List[int]:n=len(ed
  • 2024-05-14【图的连通性】【并查集】【拓扑排序】
    在图论中,不同类型的图(无向图和有向图)需要使用不同的算法和数据结构来处理它们的特性和问题。这里我们将讨论如何使用并查集来解决无向图的连通性问题,以及如何使用深度优先搜索(DFS)、广度优先搜索(BFS)和拓扑排序来解决有向图中的依赖性问题。无向图的连通性:并查集对于无向图的连通
  • 2024-05-13[LeetCode] 1584.连接所有点的最小费用 Kruskal And Prim 算法 Java 并查集
    Problem:1584.连接所有点的最小费用目录Kruskal算法复杂度CodePrim算法复杂度CodeKruskal算法复杂度时间复杂度:添加时间复杂度,示例:$O(mlog(m))$空间复杂度:添加空间复杂度,示例:$O(n)$CodeclassSolution{publicintminCostConnectPoints(int[][]po
  • 2024-05-08并查集
    并查集并查集模板包含路径压缩+小挂大constintMAXN=1e5+1;intfather[MAXN];//存父亲节点father[1]=2指的是1节点的父亲为2intsize[MAXN]; //存每个集合的大小intstack[MAXN];//intn;//建立并查集voidbuild(){ for(inti=0;i<=n;i++)
  • 2024-05-04hdu1213并查集
    第一种方法是定义每个数的老大是其自身,通过每次输入的两个数,找到它两的老大,比较大小,循环将所有大的那个老大改为小的那个数,最后输出有几个老大是其自身,案例都能过,提交就错,不知错哪了......点击查看代码importjava.util.Scanner;publicclasshdu1213{ publicstaticvoid
  • 2024-05-04[ICPC2017 WF] Scenery
    提供一个\(O(n^2\alpha(n))\)的做法。这种匹配问题如果直接寻找最优的匹配方式是困难的,因为\(\geqslantk\)的限制,当前匹配的点会对之后的产生不小的影响。但是如果我们\(\text{fix}\)好了一个选择的升序位置序列\(a\),想要判定其是否合法是容易的,需要以下两个条件:\(1.\)
  • 2024-05-03P2024 [NOI2001] 食物链
    原题链接题解带权并查集的应用,普通的并查集只能表示结点间的一种关系(如同一集合中的都是朋友)。而带权并查集的结点权值表示该结点与根结点的关系。相对应,带权并查集的路径压缩也复杂了一点。code #include<bits/stdc++.h>usingnamespacestd;constintN=5e4+5;intn,k