原理 改修放区间,答案放叶子的一种分治方法 应用 "二分图" 考虑一个图是二分图当且仅当没有奇环,用扩展域并查集维护 类似线段树的方法,遍历到一个区间就下放完全包含这个区间的边,然后判断是不是二分图 回溯的时候删去影响,所以需要资瓷删除的并查集 "CF918E" 用$bitset$维护每个位置的答案 ...
分类:
其他好文 时间:
2020-03-01 10:53:42
阅读次数:
56
并查集 并查集运用树的结构,通过判断每个点的最终双亲是否相同来判断是不是在一个集合中 一般步骤: 1.查找:查找一个点的最终双亲 递归 2.合并:如果两个相通点的双亲相同,说明已经在一个集合中,不需要合并,不同则将两个集合合并 例题:村村通 给定n个村庄和m条已经通的路,问还需要在休几条路 思路:将 ...
分类:
其他好文 时间:
2020-03-01 01:02:40
阅读次数:
74
题目链接:https://vjudge.net/problem/POJ-2236 题目大意:有一个计算机网络的所有线路都坏了,网络中有n台计算机,现在你可以做两种操作,修理(O)和检测两台计算机是否连通(S),只有修理好的计算机才能连通。连通有个规则,两台计算机的距离不能超过给定的最大距离D(一开始 ...
分类:
Web程序 时间:
2020-02-29 20:29:20
阅读次数:
82
OJ 1190 二分答案,对每个答案进行判断,用并查集进行优化,将整个场地的左侧和右侧分别设为0和n+1,每个点覆盖的范围设为i,$O(n^2)$判断点之间是否连通,最后只需判断0和n+1是否连通即可。 #include <iostream> #include <cstdio> #include < ...
分类:
其他好文 时间:
2020-02-29 16:20:59
阅读次数:
75
一、算法最最基础1、时间复杂度2、空间复杂度一般最先接触的就是时间复杂度和空间复杂度的学习了,这两个概念以及如何计算,是必须学的,也是必须最先学的,主要有最大复杂度、平均复杂度等,直接通过博客搜索学习即可。文章推荐:算法分析神器—时间复杂度二、基础数据结构1、线性表列表(必学)链表(必学)跳跃表(知道原理,应用,最后自己实现一遍)并查集(建议结合刷题学习)不用说,链表、列表必须,不过重点是链表。三
分类:
编程语言 时间:
2020-02-27 18:47:55
阅读次数:
65
ABC实在是没什么好说的,但是D题真的太妙了,详细的说一下吧 首先思路是对于a相等的分类,假设有n个,则肯定要把n-1个都增加,因为a都是相等的,所以肯定是增加t小的分类,也就是说每次都能处理一个分类,复杂度是O(n^2),这个思路很好写,优先队列随便搞一下就行了,但是题目中N = 2 * 1e5, ...
分类:
其他好文 时间:
2020-02-26 18:34:55
阅读次数:
67
题目大意: 一个 $n \times m$ 的地方,每个格子都有方向,问最少要多少个装置从任意一点出发都会碰到装置。 正文: 如果格子连在一起成为一条路的话,其实只用求路的条数就行,考虑用并查集。 代码: ...
分类:
其他好文 时间:
2020-02-26 01:16:54
阅读次数:
55
首先提取题目信息,我们需要计算朋友的关系,以及计算不开心值。 其实看题目我们很容易就有并查集的感觉,之后我们要去验证这个算法是正确的 题目要求的是求不开心值,那么我们就可以想到使用并查集求集合总数就可以了 虽然朋友不存在传递性,但是这并不影响不开心值的大小,因为如果a和b是朋友,b和c是朋友 那么虽 ...
分类:
其他好文 时间:
2020-02-25 21:45:31
阅读次数:
105
本题从题目给出的条件我们发现了最小生成树的影子,也就是kruscal的影子 其实我们在写kruscal的时候就是利用并查集的思想来写的 这题需要注意的是,我们在求取的过程中l并不需要减少,我们只要最小生成树中的最大边权小于等于l就行了 这就让我们想到了可以从小到大对边权排序,之后枚举维护树集合,如果 ...
分类:
其他好文 时间:
2020-02-25 17:54:23
阅读次数:
69
分析: 本题最重要的是通过向量的想法来解决这一类关系,这样思维难度大大降低,首先我们明白一点 根据传递性的定义(也就是离散数学中的传递性),x->y =x->z+z>y 我们要知道的一点是,并查集中的题目都是有传递性的,而传递性的题目并不一定能通过并查集解决 我们知道我们要将两个不同的集合合并,就是 ...
分类:
其他好文 时间:
2020-02-25 12:33:11
阅读次数:
65