并查集
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 · 144 阅读 · 0 评论 -
2018_10_17 模拟赛
解题报告前言洛谷 2700 逐个击破题目分析代码JZOJ 2937 监听还原分析代码JZOJ 2938 分割田地分析代码后续前言再创悲剧系列洛谷 2700 逐个击破题目给出一个nnn个点的树,问使其中的kkk个点(给定)各自不连通需要删除的边的最小代价分析然而这道题说实话还是比较好理解的,用kruskal,没错,只是思想,那么需要用到并查集,那问题是具体过程,那么可以把边权从大到...原创 2018-10-19 20:58:42 · 149 阅读 · 0 评论 -
2018_9_22 模拟赛
今日比赛目录前言:JZOJ 5771 遨游题目分析代码JZOJ 5772 今天你AK了吗?题目分析代码JZOJ 5773 简单数学题题目分析代码前言:渐入佳境233JZOJ 5771 遨游题目一个双向图,找出一对数[L,R],L≤R[L,R],L\leq R[L,R],L≤R,使双向图从起点到终点的边权在该区间范围内,且使LLL尽量大,RRR尽量小分析可以发现这是一道有关最大和最...原创 2018-09-22 15:55:48 · 442 阅读 · 0 评论 -
2018.07.09【2018提高组】模拟B组
前言:再次听取WA声一片!(由于题目较难,分开写)JZOJ 1503 体育场JZOJ 1158 荒岛野人JZOJ 1161 机器人M号后续洛谷 2421 荒岛野人原创 2018-07-09 14:55:21 · 257 阅读 · 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 · 139 阅读 · 0 评论 -
2019.01.19【NOIP提高组】模拟 A 组
生于忧患死于安乐JZOJ 2941 贿赂分析JZOJ 3771 小Z的烦恼题目分析后续JZOJ 2941 贿赂分析枚举k颗糖怎么分,再求概率期望JZOJ 2940 生成输入数据高仿CH 6201JZOJ 3771 小Z的烦恼题目有nnn个球,mmm个盒子,若iii号球在第kkk个盒子里,那么2i2i2i号球必须在第k+1k+1k+1个盒子里,问第一个盒子最多能有多少个球...原创 2019-01-19 21:55:31 · 168 阅读 · 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 · 177 阅读 · 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 · 209 阅读 · 0 评论 -
poj 2492 A Bug's Life#并查集#
题目大意某教授认为一种虫子只具有两种性别,他会给你mmm个虫子交配的信息(1—n编号1—n编号1—n编号),当然教授的观点有真有假,希望你去证实。(ttt组数据)分析由于数据比较大,这里采用并查集的方法,因为不知道虫子的性别,所以每种性别都假定,每处理一种关系,如果两个性别的并查集的两条虫子是异性,那么是可以交配的,但是发现它们性别相同,那么教授的观点就是错误的。代码...原创 2018-04-11 16:23:10 · 148 阅读 · 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 · 110 阅读 · 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 · 507 阅读 · 0 评论 -
2018年10月30日普级组
解题报告前言小X的加法难题分析代码小X的密码破译题目分析代码小X的液体混合题目分析代码(小题大做的压位快速幂)小X的AK计划题目分析代码后续前言结果更正结论:生于忧患,死于安乐小X的加法难题分析简单字符串处理代码#include <cstdio>#include <cstring>#define rr registerusing names...原创 2018-10-31 10:00:50 · 188 阅读 · 0 评论 -
2018_5_12 模拟赛
前言水了……SSL 2413 2414 2415NO.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 · 148 阅读 · 0 评论 -
#左偏树,并查集#zoj 2334 hdu 1512 洛谷 1456 Monkey King
题目有n只猴子,他们要打m次架,每次打架呢,都会拉上自己朋友最牛叉的出来跟别人打,打完之后战斗力就会减半,每次打完架就会成为朋友。问每次打完架之后那俩猴子最牛叉的朋友战斗力还有多少,若朋友打架就输出-1。分析二叉堆的合并比较慢,那么二项堆和FIBONACCI堆我都不会,所以可以用一种较中和的数据结构,左偏树,同时用并查集维护即可代码#include <cstd...原创 2018-08-24 16:31:31 · 176 阅读 · 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 · 211 阅读 · 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 · 218 阅读 · 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 · 161 阅读 · 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 · 162 阅读 · 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 · 107 阅读 · 0 评论 -
2018.12.08【NOIP提高组】模拟B组
迟到的解题报告JZOJ 5123 diyiti分析代码JZOJ 100042 保留道路代码JZOJ 5123 diyitibzoj 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 · 499 阅读 · 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 · 228 阅读 · 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 · 207 阅读 · 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 · 158 阅读 · 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 · 214 阅读 · 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 · 131 阅读 · 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 · 234 阅读 · 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 · 170 阅读 · 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 · 309 阅读 · 0 评论 -
#并查集#JZOJ 1778 洛谷 2024 食物链
题目大意:给你一些真假不明的同类关系或捕食关系,求有多少个假关系。题目分析:首先因为真假不明,所以理论上的并查集是错误的。所以说三种关系,吃,被吃,同类。因为我们不知道它们是什么动物,但它们组成了一个环,所以只是相对关系。1~n——————A;C;Bn+1~2n————B;A;C2n+1~3n———C;B;A#include &lt;cstdio&gt;...原创 2018-01-31 21:42:12 · 202 阅读 · 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 · 210 阅读 · 0 评论 -
(ssl 2346)联络员#kruskal,并查集#
Description随着Tyvj网站的逐步壮大,管理员的数目也越来越多,现在你身为Tyvj管理层的联络员,希望你找到一些通信渠道,使得管理员两两都可以联络(直接或者是间接都可以)。Tyvj是一个公益性的网站,没有过多的利润,所以你要尽可能的使费用少才可以。 目前你已经知道,Tyvj的通信渠道分为两大类,一类是必选通信渠道,无论价格多少,你都需要把所有的都选择上;还有一类是选择性的通信渠道,你...原创 2018-01-06 14:16:13 · 292 阅读 · 0 评论 -
(ssl 1615)Frogger#floyd,kruskal,并查集#
好想copy题目分析:从Freddy到Fiona的路径中,一条路径最大的边的最小值其实就是变种floydf[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 · 210 阅读 · 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 · 1300 阅读 · 0 评论 -
(ssl 2348)连接格点#kruskal,并查集#
Description 有一个M行N列的点阵,相邻两点可以相连。一条纵向的连线花费一个单位,一条横向的连线花费两个单位。某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通。分析:容我解释测试点所以,既然求最小生成树,纵向优先。那怎样连呢。Kruskal首先一件重要的事情就是并查集是一维的。所以(x,y)用(x-1)*n...原创 2018-01-06 14:28:19 · 308 阅读 · 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 · 1002 阅读 · 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 · 458 阅读 · 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 · 463 阅读 · 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 · 162 阅读 · 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 · 167 阅读 · 0 评论 -
#最小生成树,prim,kruskal#poj 2560 Freckles 雀斑
题目求最小生成树分析prim &amp; kruskalKruskal代码#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 · 187 阅读 · 0 评论