
并查集
lemondinosaur
转圈圈 不停转圈圈 然后摔倒
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2019.07.05【NOIP提高组】模拟 A 组
解题报告JZOJ 3301 家族题目分析代码JZOJ 3302 供电网络分析代码JZOJ 3303 洛谷 4841 城市规划分析代码 JZOJ 3301 家族 题目 在一个图中,割掉某些边,使其成为若干个连通块,相应的连通块的个数影响权值,问在使权值和不少于kkk的情况下,让选择的边的极差最小 分析 按边权从小到大排序,选择一段区间,求出权值和,用并查集维护,时间复杂度O(m2α(m))O(m^...原创 2019-07-07 16:35:02 · 180 阅读 · 0 评论 -
2018_10_17 模拟赛
解题报告前言洛谷 2700 逐个击破题目分析代码JZOJ 2937 监听还原分析代码JZOJ 2938 分割田地分析代码后续 前言 再创悲剧系列 洛谷 2700 逐个击破 题目 给出一个nnn个点的树,问使其中的kkk个点(给定)各自不连通需要删除的边的最小代价 分析 然而这道题说实话还是比较好理解的,用kruskal,没错,只是思想,那么需要用到并查集,那问题是具体过程,那么可以把边权从大到...原创 2018-10-19 20:58:42 · 179 阅读 · 0 评论 -
2018_9_22 模拟赛
今日比赛目录前言:JZOJ 5771 遨游题目分析代码JZOJ 5772 今天你AK了吗?题目分析代码JZOJ 5773 简单数学题题目分析代码 前言: 渐入佳境233 JZOJ 5771 遨游 题目 一个双向图,找出一对数[L,R],L≤R[L,R],L\leq R[L,R],L≤R,使双向图从起点到终点的边权在该区间范围内,且使LLL尽量大,RRR尽量小 分析 可以发现这是一道有关最大和最...原创 2018-09-22 15:55:48 · 545 阅读 · 0 评论 -
2018.07.09【2018提高组】模拟B组
前言:再次听取WA声一片!(由于题目较难,分开写) JZOJ 1503 体育场 JZOJ 1158 荒岛野人 JZOJ 1161 机器人M号 后续 洛谷 2421 荒岛野人原创 2018-07-09 14:55:21 · 291 阅读 · 0 评论 -
#kruskal,并查集#jzoj 1255 洛谷 2323 公路修建问题
题目 求一个无向图的最小生成树,且最小生成树上的边至少有k条是1级公路(保证单条公路费用一级≥\geq≥二级) 分析 kruskal先按一级最小后二级最大排序,求出前kkk条1级公路,再按二级最小排序求出n−1−kn-1-kn−1−k条公路 代码 #include <cstdio> #include <cctype> #include <algorithm>...原创 2018-11-15 16:16:14 · 172 阅读 · 0 评论 -
2019.01.19【NOIP提高组】模拟 A 组
生于忧患死于安乐JZOJ 2941 贿赂分析JZOJ 3771 小Z的烦恼题目分析后续 JZOJ 2941 贿赂 分析 枚举k颗糖怎么分,再求概率期望 JZOJ 2940 生成输入数据 高仿CH 6201 JZOJ 3771 小Z的烦恼 题目 有nnn个球,mmm个盒子,若iii号球在第kkk个盒子里,那么2i2i2i号球必须在第k+1k+1k+1个盒子里,问第一个盒子最多能有多少个球 ...原创 2019-01-19 21:55:31 · 202 阅读 · 0 评论 -
2018.07.13【2018提高组】模拟C组
前言:终于乐观(optimistic)(打表打漏了,还是比较高) JZOJ 3382 七夕祭 题目 环(jiang)形(de)均(tai)分(cao)纸(shuai)牌(le) 分析 首先在做这道题之前,要知道均分纸牌,设A[i]=C[i]−SUM/NA[i]=C[i]−SUM/NA[i]=C[i]-SUM/N,然后S[i]是A[i]的前缀和,答案就是∑|S[i]|∑...原创 2018-07-13 22:55:49 · 207 阅读 · 0 评论 -
2018.01.27【GDOI2018】模拟C组
这套题我考得不错 JZOJ NO.1 香烟 简单的纯模拟。 #include <cstdio> using namespace std; int n,m,ans; int main(){ scanf("%d%d",&n,&m); ans=n;//首先答案为香烟数 while (n/m){//如果可以换香烟蒂头 ans+=...原创 2018-01-30 08:14:54 · 240 阅读 · 0 评论 -
poj 2492 A Bug's Life#并查集#
题目大意 某教授认为一种虫子只具有两种性别,他会给你mmm个虫子交配的信息(1—n编号1—n编号1—n编号),当然教授的观点有真有假,希望你去证实。(ttt组数据) 分析 由于数据比较大,这里采用并查集的方法,因为不知道虫子的性别,所以每种性别都假定,每处理一种关系,如果两个性别的并查集的两条虫子是异性,那么是可以交配的,但是发现它们性别相同,那么教授的观点就是错误的。 代码 ...原创 2018-04-11 16:23:10 · 185 阅读 · 0 评论 -
poj 1861 Network#最小生成树,kruskal#
题目大意 求至少需要多少条电缆,才能连接所有集线器,并且单条电缆的最大长度最小,输出电缆的最大长度,数量,及每条电缆的连接点。 分析 Kruskal,用并查集,并且记录边的两头。 代码 #include &amp;amp;lt;cstdio&amp;amp;gt; #include &amp;amp;lt;cctype&amp;amp;gt; #include &amp;原创 2018-04-11 17:26:54 · 144 阅读 · 0 评论 -
2018年10月30日提高组
解题报告JZOJ 5913 林下风气题目分析代码JZOJ 5194 盟主的忧虑题目分析代码JZOJ 5907 轻功题目分析代码JZOJ 5194 盟主的忧虑题目分析代码JZOJ 5907 轻功题目分析代码JZOJ 5194 盟主的忧虑题目分析代码JZOJ 5907 轻功题目分析代码JZOJ 5194 盟主的忧虑题目分析代码JZOJ 5907 轻功题目分析代码 JZOJ 5913 林下风气 题目 问...原创 2018-10-30 16:24:54 · 554 阅读 · 0 评论 -
2018年10月30日普级组
解题报告前言小X的加法难题分析代码小X的密码破译题目分析代码小X的液体混合题目分析代码(小题大做的压位快速幂)小X的AK计划题目分析代码后续 前言 结果 更正 结论: 生于忧患,死于安乐 小X的加法难题 分析 简单字符串处理 代码 #include <cstdio> #include <cstring> #define rr register using names...原创 2018-10-31 10:00:50 · 231 阅读 · 0 评论 -
2018_5_12 模拟赛
前言 水了…… SSL 2413 2414 2415 NO.1 NO.2 NO.3 排名 简写单词 连通块 排名(水而玄学,直接贴代码) #include &lt;cstdio&gt; #include &lt;algorithm&gt; using namespace std; struct score{int chi,mat,eng,itx,rank;}sco[51]; ...原创 2018-05-12 13:20:45 · 176 阅读 · 0 评论 -
#左偏树,并查集#zoj 2334 hdu 1512 洛谷 1456 Monkey King
题目 有n只猴子,他们要打m次架,每次打架呢,都会拉上自己朋友最牛叉的出来跟别人打,打完之后战斗力就会减半,每次打完架就会成为朋友。问每次打完架之后那俩猴子最牛叉的朋友战斗力还有多少,若朋友打架就输出-1。 分析 二叉堆的合并比较慢,那么二项堆和FIBONACCI堆我都不会,所以可以用一种较中和的数据结构,左偏树,同时用并查集维护即可 代码 #include <cstd...原创 2018-08-24 16:31:31 · 208 阅读 · 0 评论 -
#并查集,离散#洛谷 1955 loj 2129 jzoj 5729 codevs 4600 程序自动分析
题目 给出一些相等或不等的关系,求是否符合逻辑解 分析 其中的相等关系可以先用并查集做出来,对于每个不等关系判断是否拥有共同祖先,但是数据很大,所以要用离散(哈希?我懒) 代码 #include <cstdio> #include <algorithm> struct rec{int x,y,t;}a[100001]; int n,uniq[200...原创 2018-08-20 11:15:19 · 253 阅读 · 0 评论 -
#二叉堆 or 并查集 and 贪心#poj 1456 uva 1316 Supermarket
题目 有NNN个商品,收益PiPiP_i,和过期时间 DiDiD_i,一旦超过了过期时间,商品就不能再卖,问最大收益。 分析(二叉堆) 可以按过期时间从小到大排序,扫描每个商品,建小根堆,存收益;如果过期时间超过堆的个数,那么直接插入堆,等于堆的个数,那么需要与堆顶比较出较大的为堆顶。时间复杂度O(nlogn)O(nlogn)O(nlogn) 代码 #include &l...原创 2018-08-20 11:57:20 · 265 阅读 · 0 评论 -
#并查集#codevs 4511 洛谷 2661 jzoj 4324 信息传递
题目:并查集求最小环 分析 除了维护祖先,同时还要维护距离。 代码 #include &lt;cstdio&gt; #include &lt;cctype&gt; using namespace std; int n,f[200001],dis[200001],min; int in(){ int ans=0; char c=getchar(); while..原创 2018-07-18 19:18:40 · 192 阅读 · 0 评论 -
#并查集#JZOJ 1503 体育场
比赛 题目 有一个圆环,知道两个点的相对关系,求至少有多少个关系是错的。 分析 用并查集,f表示最早的祖先,dis表示到最早的祖先的距离。 dis[v]=((dis[x]−dis[y]+w+300)mod300)dis[v]=((dis[x]−dis[y]+w+300)mod300)dis[v]=((dis[x]-dis[y]+w+300) \mod {300}) 当在同一...原创 2018-07-09 15:59:55 · 189 阅读 · 0 评论 -
#并查集#洛谷 1197 JZOJ 1717 星球大战
题目 摧毁一些星球,问当前的连通块数 分析 直接做很困难,所以这个问题可以反向枚举,把摧毁当成修复,用并查集维护就行了 代码 #include <cstdio> #define rr register #define N 400001 #define min(a,b) ((a)<(b))?(a):(b) #define max(a,b) ((a)>(b))?(a):(b...原创 2018-09-22 21:21:36 · 127 阅读 · 0 评论 -
2018.12.08【NOIP提高组】模拟B组
迟到的解题报告JZOJ 5123 diyiti分析代码JZOJ 100042 保留道路代码 JZOJ 5123 diyiti bzoj 4927 链接 分析 6根木棍,只能是3+1+1+1或者是2+2+1+1,所以分类讨论。(以下其它情况都排除了之前的情况,也就是容斥,为了行文方便,在此不多写) 设边长为xxx(i×2i\times2i×2代表i和ii和ii和i) 2+2+1+1的组合方式...原创 2018-12-13 18:27:05 · 554 阅读 · 0 评论 -
#kruskal,树上倍增,lca#ssl 2267 洛谷 1967 货车运输
题目 每条道路都有限重,一些货车从某个城市到达另一个城市,求最多可载多少的货物。 分析 咋一看,貌似有点难,后来发现不就kruskal(改成最大生成树)吗,然后怎样求两点间的最大载重就用树上倍增。 代码 #include &lt;cstdio&gt; #include &lt;queue&gt; #include &lt;cctype&gt; #原创 2018-06-19 21:33:30 · 249 阅读 · 0 评论 -
2018_5_19 模拟赛
前言 超级迟到的博客 SSL NO.1 面积 题目 求a和b的值,使阴影部分面积最大。 分析 首先看到这个三角形 一看就是直角三角形,短直角边为a/2,斜边为r,那么长直角边可以用勾股定理算出来,乘2后得到长方形的长,算出两个长方形再减去中间的部分求a,b最大值,所以枚举a,b 1至2*r-1即可。 #include <cstdio> #inc...原创 2018-06-03 11:21:30 · 249 阅读 · 0 评论 -
#并查集#poj 1988 Cube Stacking
题目大意 两种操作,把编号为x的那一堆移到编号为y的上方,或求编号为x的积木下方有多少块积木。 分析 类似于银河星球传说 加权并查集,son表示这一堆的积木数量,dis表示该点到堆顶的距离。 很显然可以求出 answer[x]=son[getf(x)]-dis[x]-1 代码 #include &lt;cstdio&gt; #include &lt;cctype&g..原创 2018-04-12 16:19:53 · 185 阅读 · 0 评论 -
SSL 1764 1682 洛谷 1546 USACO 3.1 Agri-Net 最短网络#kruskal#
题目 求最小生成树 分析 因为它是对称的,所以只需一半的内存,然后剩下的和Kruskal差不多了。 代码 #include &lt;cstdio&gt; #include &lt;cctype&gt; #include &lt;algorithm&gt; using namespace std; struct node{int x,y,w;}e原创 2018-03-21 16:49:43 · 240 阅读 · 0 评论 -
#kruskal#SSL 1312 2461 洛谷 2502 旅行
题目 选择行使过程中最大速度和最小速度的比尽可能小的路线 分析 运用Kruskal,首先枚举一条边,然后找一个最小生成树。 代码 #include &lt;cstdio&gt; #include &lt;cctype&gt; #include &lt;algorithm&gt; using namespace std; struct node{原创 2018-03-31 14:11:06 · 159 阅读 · 0 评论 -
#离散,并查集#JZOJ 1375(初中) 1779(高中)奇偶游戏 poj 1733 codevs 2546 parity game
首先用s数组来表示这个01序列从第一个开始到第i个的奇偶性。 a b even说明s[b]和s[a-1]的奇偶性相同,否则不同。 当a b even且s[b]和s[a-1]的奇偶性不同或a b odd且s[b]和s[a-1]的奇偶性相同时为错误信息。 离散化+并查集。 #include &amp;amp;lt;cstdio&amp;amp;gt; #include &amp;amp;lt;algorit原创 2018-02-17 19:31:31 · 260 阅读 · 0 评论 -
#并查集#JZOJ 1751 span
不管怎么样,这道题很水。 首先数据点n=100,m&lt;10000。 纯模拟是可以水过的,不过加上并查集那就正解了。 #include &lt;cstdio&gt; #include &lt;algorithm&gt; using namespace std; struct z{int x,y,k;}a[10001]; int n,m,f[101],total,ans,t,s原创 2018-02-16 23:29:32 · 207 阅读 · 0 评论 -
#并查集,Kruskal,01背包#
并查集 洛谷 1536 村村通 求还要修多少条路,也就是问集合的数量-1。 #include &lt;cstdio&gt; using namespace std; int f[1001],n,m,x,y; int getf(int u){return (f[u]==u)?u:f[u]=getf(f[u]);} void uni(int x,int y){ int fa=...原创 2018-02-15 22:29:33 · 346 阅读 · 0 评论 -
#并查集#JZOJ 1778 洛谷 2024 食物链
题目大意:给你一些真假不明的同类关系或捕食关系,求有多少个假关系。 题目分析:首先因为真假不明,所以理论上的并查集是错误的。所以说三种关系,吃,被吃,同类。因为我们不知道它们是什么动物,但它们组成了一个环,所以只是相对关系。 1~n——————A;C;B n+1~2n————B;A;C 2n+1~3n———C;B;A #include &lt;cstdio&gt;...原创 2018-01-31 21:42:12 · 230 阅读 · 0 评论 -
#并查集#JZOJ 1777 洛谷 1551 亲戚
(交洛谷的请调整输入!此处以JZOJ为准) #include &lt;cstdio&gt; using namespace std; int f[100001],n,m,x,y; int getf(int u){ if (f[u]==u) return u; else return f[u]=getf(f[u]);//路径压缩 } void uni(int x,int y){ ...原创 2018-01-31 21:04:32 · 249 阅读 · 0 评论 -
(ssl 2346)联络员#kruskal,并查集#
Description 随着Tyvj网站的逐步壮大,管理员的数目也越来越多,现在你身为Tyvj管理层的联络员,希望你找到一些通信渠道,使得管理员两两都可以联络(直接或者是间接都可以)。Tyvj是一个公益性的网站,没有过多的利润,所以你要尽可能的使费用少才可以。 目前你已经知道,Tyvj的通信渠道分为两大类,一类是必选通信渠道,无论价格多少,你都需要把所有的都选择上;还有一类是选择性的通信渠道,你...原创 2018-01-06 14:16:13 · 329 阅读 · 0 评论 -
(ssl 1615)Frogger#floyd,kruskal,并查集#
好想copy题目 分析:从Freddy到Fiona的路径中,一条路径最大的边的最小值 其实就是变种floyd f[i][j]=min(f[i][j],max(f[i][k],f[k][j]))最大值最小 首先第一波福利(n^3) #include &lt;cstdio&gt; #include &lt;algorithm&gt; #include &lt;cmat原创 2018-01-13 11:04:40 · 244 阅读 · 0 评论 -
(洛谷 3366)【模(mú)板】最小生成树#kruskal,并查集#
事实上这道题还是比较水的 Prim和Kruskal任选一个 我感觉还是Kruskal好一点 (并查集) 首先要排序先 #include &lt;cstdio&gt; #include &lt;algorithm&gt; using namespace std; struct uni{ int u,v,w; }e[200001],t; int n,p=1,m,原创 2018-01-13 08:27:54 · 1335 阅读 · 0 评论 -
(ssl 2348)连接格点#kruskal,并查集#
Description 有一个M行N列的点阵,相邻两点可以相连。一条纵向的连线花费一个单位,一条横向的连线花费两个单位。某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通。 分析:容我解释测试点 所以,既然求最小生成树,纵向优先。 那怎样连呢。 Kruskal 首先一件重要的事情就是并查集是一维的。 所以(x,y)用(x-1)*n...原创 2018-01-06 14:28:19 · 332 阅读 · 0 评论 -
SSL 2344 洛谷 2835 信息学奥赛一本通 1383 刻录光盘#floyd,tarjan,kosaraju#
洛谷请关掉优化 题目 求有多少个连通块 分析 floyd+并查集 floyd代码 #include &amp;lt;cstdio&amp;gt; #include &amp;lt;cctype&amp;gt; #include &amp;lt;cstring&amp;gt; using namespace std; int n,m原创 2018-03-16 20:13:22 · 1086 阅读 · 0 评论 -
#并查集,哈希#洛谷 2814 SSL 2343 信息学奥赛一本通 1388 家谱
有了map,就很容易解决了。 题目 求两个人的关系 分析 并查集 代码 #include &lt;iostream&gt; #include &lt;map&gt; using namespace std; map&lt;string,string&gt;uk; string s; string getf(string u原创 2018-03-24 14:10:12 · 501 阅读 · 1 评论 -
#并查集#洛谷 1892 信息奥赛一本通 1385 SSL 2341 团伙
题目 计算出这个城市的人最多有多少个团伙 分析 并查集,注意敌人的敌人。 洛谷代码 #include &lt;cstdio&gt; #include &lt;cctype&gt; using namespace std; int n,f[2001],ans,m; int getf(int x){return (f[x]==x)?x:f[x]=getf(f[x]);} vo.原创 2018-03-23 21:18:30 · 515 阅读 · 0 评论 -
#并查集#poj 1611 The Suspects 嫌犯
题目 求学生0能传染的人数 分析 并查集 代码 #include &lt;cstdio&gt; #include &lt;cctype&gt; using namespace std; int n,m,f[30001]; int getf(int u){return (f[u]==u)?u:f[u]=getf(f[u]);} int in(){ int a原创 2018-03-23 19:32:10 · 185 阅读 · 0 评论 -
#并查集#poj 2524 Ubiquitous Religions 无处不在的宗教
题目 求有多少种不同的宗教。 分析 并查集 代码 #include &lt;cstdio&gt; #include &lt;cctype&gt; using namespace std; int f[50001],n,m,g; int getf(int u){return (f[u]==u)?u:f[u]=getf(f[u]);} int in(){ in原创 2018-03-23 19:43:48 · 202 阅读 · 0 评论 -
#最小生成树,prim,kruskal#poj 2560 Freckles 雀斑
题目 求最小生成树 分析 prim &amp; kruskal Kruskal代码 #include &lt;cstdio&gt; #include &lt;cmath&gt; #include &lt;algorithm&gt; using namespace std; struct node{int u,v; double原创 2018-03-23 20:05:39 · 215 阅读 · 0 评论