并查集
Self-Discipline
在校大学生
展开
-
POJ - 2236 Wireless Network (并查集)
题目:http://poj.org/problem?id=2236题意:n台损坏的计算机分布在二维平面的一些点上,给出n台计算机的位置,给出两种操作,一是修复某台计算机,二是 查询两台计算机之间是否能联络。分析:好久没做并查集了,一开始想着用深搜,尴尬,后来分析搜索明显超时,明显一道裸的并查集。两台计算机能联络必须满足两个条件,一是距离d’<=d,二是两台计算机完好。(用个标记)并查...原创 2017-09-14 22:15:10 · 183 阅读 · 0 评论 -
2019年湘潭大学程序设计竞赛-G Truthman or Fakeman
题目:有n个人在玩一个身份扮演的游戏。把这n个人编号为1,2,3...n。其中每个人会扮演下面两种身份中的一种:Truthman:当某个人扮演Truthman时,这个人只会说真话。Fakeman:当某个人扮演Fakeman时,这个人只会说假话。这n个人是互相知道身份的,但是Casya作为一个旁观者不知道任何一个人的身份。为了让Casya有可能推断这些人的身份,这n个人说了m句话。每...原创 2019-05-30 15:16:50 · 217 阅读 · 0 评论 -
UVA-11354
题意:最小瓶颈路,给出一张n个点m条边的无向图, 每条边有一个危险度,有q个询问, 每次给出两个点s、t,找一条路, 使得路径上的最大危险度最小。思路一:并查集(按秩合并),求一个最小生成树, 任意两点在生成树上有唯一路径, 而且这条路径上的最大危险值一定最小。 但是n和q都太大, 如果直接顺着树走,每次询问最大复杂度O(n), 那么复杂度高达O(n^2),会超时。 并查集在用了路径压缩之后效...原创 2019-05-31 08:46:30 · 375 阅读 · 0 评论 -
LA 4730 Kingdom 线段树+并查集
题意:有T组測试数据。每组数据的N表示有N个城市,接下来的N行里每行给出每一个城市的坐标(0<=x,y<=1000000),然后有M(1<M<200000)个操作,操作有两类,(1)"road A B",表示将城市A和城市B通过一条道路连接,假设A和B原来属于不同的城市群。经过这个操作。A和B就在一个城市群里了。保证每条道路不会和其它道路相交(除了端点A和B)。(2)"li...原创 2019-06-01 10:01:38 · 173 阅读 · 0 评论 -
LA 3644 X-Plosives 易爆物(并查集)
题意:有一些简单化合物,每种化合物含有两种元素,要将这些化合物装到车上,但是如果车上的化合物中,存在某k个化合物正好包含k种元素,则会爆炸。现在你是装箱工人,每当你拿到一个化合物,你都会检查如果将它装到车上是否会参生爆炸,如果会你就会拒绝将这个化合物装上车。问一共会拒绝装多少个化合物。分析:关键转化“k个化合物正好包含k种元素”这句话,将每种元素视为一个点,每种化合物视为一条边,也就是说,不能...原创 2019-07-09 09:04:46 · 162 阅读 · 0 评论 -
LA3027:Corporative Network 合作网络 (并查集)
题意:有n个节点,有两个操作,I x y:把x作为y的子节点连上,他们的距离为abs(x-y)%1000;E x:查询x到根节点的距离。思路:加权并查集,其实这题就是在普通并查集的基础上增加一个数组d[x], 记录X到根节点的距离。代码:#include<bits/stdc++.h>using namespace std;const int maxn = 20000...原创 2019-07-09 09:15:54 · 126 阅读 · 0 评论 -
POJ3694 Network (无向图缩点+割边+并查集优化)
题意:给出n个点,m条无向边的图,图中存在割边,问每加入一条新的边后的割边(桥)的数量。分析:《算法竞赛进阶指南》P407。代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using na...原创 2019-07-31 09:16:05 · 305 阅读 · 0 评论 -
CH4901/洛谷1525 关押罪犯(贪心+并查集or二分+二分图染色)
题意:有n个罪犯,其中有m对憎恨关系,表示a和b的怨气值为c。把这n个罪犯放到两个监狱中,使每个监狱里中最大的两罪犯的怒气值最小。输出这个最大的怒气值。分析:挺简单的一道题。方法一:贪心+并查集。冲突值从大到小排序,先解决冲突值最大的纠纷,将两个罪犯放到不同的监狱,将放在同一个监狱的罪犯并到同一颗树(集合)上,再次遇到敌人时候可将这两个敌人并到一棵树上,若当前两个罪犯已经在同一颗树上,则该...原创 2019-08-01 10:55:51 · 187 阅读 · 0 评论 -
CodeForces 455C
题意:给定N,M和Q,N表示有N个城市,M条已经修好的路,修好的路是不能改变的,然后是Q次操作,操作分为两种,一种是查询城市x所在的联通集合中,最长的路为多长。二是连接两个联通集合,采用联通之后最长路最短的方案。分析:两树合并时,设直径分别为len1,len2,新树直径为max(len1,len2,(len1/2)+(len2/2)+(len1%2)+(len2%2)+1),即两颗旧树的直径,...原创 2019-08-11 00:21:20 · 226 阅读 · 0 评论