![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最小生成树
_beginend
这个作者很懒,什么都没留下…
展开
-
bzoj 4144: [AMPPZ2014]Petrol spfa+最小生成树
题意给定一个n个点、m条边的带权无向图,其中有s个点是加油站。 每辆车都有一个油量上限b,即每次行走距离不能超过b,但在加油站可以补满。 q次询问,每次给出x,y,b,表示出发点是x,终点是y,油量上限为b,且保证x点和y点都是加油站,请回答能否从x走到y。 2<=s<=n<=200000,1<=m<=200000,1<=q<=200000分析感觉上比较巧妙的一道题(大爷们都说这是水题,可能是原创 2017-07-20 10:00:51 · 532 阅读 · 0 评论 -
bzoj 3714: [PA2014]Kuglarz 最小生成树
1原创 2017-07-07 22:09:02 · 354 阅读 · 0 评论 -
bzoj 3551: [ONTAK2010]Peaks加强版 Kruskal重构树+可持久化线段树
题意同bzoj3545,题解,强制在线。分析一开始yy出了一种用可持久化线段树来维护可持久化的root数组,然后其他的就像离线那样,只是每次合并线段树的时候不改变原来两棵树的儿子,而是新建节点。恩理论上好像是可以的,但是懒得写。这题可以用一种叫Kruskal重构树的东西来搞,具体看PoPoQQQ大爷的题解。 大概就是说一开始新图中没有边,做小生成树的时候,每次加入一条新边(u,v,w),就在新图中原创 2017-07-26 17:00:16 · 791 阅读 · 0 评论 -
51nod 1213 二维曼哈顿距离最小生成树 树状数组
题意二维平面上有N个坐标为整数的点,点x1 y1同点x2 y2之间的距离为:横纵坐标的差的绝对值之和,即:Abs(x1 - x2) + Abs(y1 - y2)(也称曼哈顿距离)。求这N个点所组成的完全图的最小生成树的边权之和。 n<=50000,0<=xi,yi<=1000000分析有个小结论就是以一个点为原点建立直角坐标系,在每45度内只会向距离该点最近的一个点连边。 证明比较繁琐,可以点这原创 2017-08-18 15:16:08 · 738 阅读 · 0 评论 -
bzoj 1821: [JSOI2010]Group 部落划分 Group Kruskal
题意给出平面上n个点,要求把这n个点划分成k个集合,使得最近的两个不同集合的点最远。 n<=1000分析唉无聊刷道水题玩玩。 把n*(n-1)/2条边排序后从小到大加,加到不能加的那条边的长度即为答案。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#inc原创 2017-09-05 22:21:15 · 263 阅读 · 0 评论 -
bzoj 2753: [SCOI2012]滑雪与时间胶囊 最小生成树
题意a180285非常喜欢滑雪。他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点(同时也是景点),而且每个景点都有一编号i(1<=i<=N)和一高度Hi。a180285能从景点i 滑到景点j 当且仅当存在一条i 和j 之间的边,且i 的高度不小于j。 与其他滑雪爱好者不同,a180285喜欢用最短的滑行路径去访问尽量多的景点。如果仅仅访问一条路径上的景点,他会觉得数量太少。于是a180原创 2017-09-30 15:13:42 · 315 阅读 · 0 评论 -
51nod 1743 雪之国度 Kruskal+倍增+并查集
题意雪之国度有N座城市,依次编号为1到N,又有M条道路连接了其中的城市,每一条道路都连接了不同的2个城市,任何两座不同的城市之间可能不止一条道路。 雪之女王赋予了每一座城市不同的能量,其中第i座城市被赋予的能量为Wi。 如果城市u和v之间有一条道路,那么只要此刻雪之女王的能量不小于|Wu-Wv|,这条道路就是安全的。 如果城市u和v之间存在两条没有重复道路的安全路径(其中每一段道路都是安全的)原创 2018-01-02 20:03:31 · 374 阅读 · 0 评论 -
uoj #176. 新年的繁荣 字典树+Boruvka算法
题意有n个点,第i个点的权值为a[i],在第i个点和第j个点之间连边的代价为a[i] and a[j]。问这个图的最大生成树。 n<=100000,a[i]<218n<=100000,a[i]<218nO(m2m)O(m2m)O(m2^m)。 我们可以在字典树每个节点维护其子树中连通块编号的最大值和最小值,这样就能判断子树中是否存在不同的连通块。 那么总的时间复杂...原创 2018-03-06 20:32:14 · 1223 阅读 · 0 评论 -
51nod 1601 完全图的最小生成树计数 字典树+最小生成树
题意给定一个长度为n的数组a[1..n],有一幅完全图,满足(u,v)的边权为a[u] xor a[v] 求边权和最小的生成树,你需要输出边权和还有方案数对1e9+7取模的值 1<=n<=10^5 0<=a[i]<2^30分析根据异或的性质,我们可以从高位到低位贪心。对于当前位,我们可以把点集分为当前位是1和是0两部分,显然最优的连边方案是两个集合自成...原创 2018-03-06 21:39:39 · 523 阅读 · 0 评论 -
bzoj 5101: [POI2018]Powód 最小生成树+并查集
题意在地面上有一个水箱,它的俯视图被划分成了n行m列个方格,相邻两个方格之间有一堵厚度可以忽略不计的墙,水箱与外界之间有一堵高度无穷大的墙,因此水不可能漏到外面。已知水箱内每个格子的高度都是[0,H]之间的整数,请统计有多少可能的水位情况。因为答案可能很大,请对10^9+7取模输出。两个情况不同当且仅当存在至少一个方格的水位在两个情况中不同。 n*m<=500000,1<=H&l...原创 2018-03-14 21:32:27 · 230 阅读 · 0 评论 -
bzoj 3206: [Apio2013]道路费用 dfs+最小生成树+并查集
题意有一个n个点m条边的无向图,边都有权值,每个点上有p[i]个人。现在又要新加入k条边,要求给这k条边赋上一个权值,然后在原图中选择任意一个最小生成树,求当所有人都要走到节点1时,k条边中每条边的权值乘上经过该边的人数的最大值。 n<=100000,m<=300000,k<=20分析一开始的想法是,2^k枚举每条边选或不选,然后强制选那些被选定的边。对于原来最...原创 2018-03-06 16:57:31 · 293 阅读 · 0 评论 -
AtCoder Regular Contest 093 E - Bichrome Spanning Tree 最小生成树
题意给一个n个点m条边的无向图,边有边权。每条边可以涂成黑色或白色。问有多少种涂色方案使得图中存在一棵即有黑边又有白边的生成树,且满足上述条件的最小生成树的边权和恰好为X。 n<=1000,m<=2000n<=1000,m<=2000nval[i]val[i]val[i]表示一定包含第i条边的最小生成树的边权和。 对于所有val[i]<Xval[i]<X...原创 2018-03-26 19:49:02 · 276 阅读 · 0 评论 -
bzoj 4777: [Usaco2017 Open]Switch Grass 线段树+最小生成树+set
题意给定一张带权无向图,每个点有一个颜色,每次改变一个点的颜色,要求你在操作后输出这个图中最近异色点对之间的距离最近异色点对定义为:一对点颜色不同,且距离最小。 n,m,q<=200000分析有两个很重要的结论: 1、答案只可能是一条边。 2、答案必然在最小生成树上。 证明的话自己yy一下就好了。 我们可以先求出最小生成树,然后对于每个节点开一棵以颜色为下标的线段树,储存的是其所有子节点到原创 2017-06-01 20:57:48 · 750 阅读 · 0 评论 -
bzoj 2654: tree 二分+最小生成树
题意给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有need条白色边的生成树。 题目保证有解。 n<=50000,m<=100000分析感觉这是一道比较巧妙的题目。 有一个很重要的想法就是我们可以使得所有白色边同时加上或减去一个数来控制我们使用的白边数量,那么我们就可以通过二分这个数使得其恰好包含我们所需要的白边数量。 还有一个细节,就是如果取mid时白边数量代码#inc原创 2017-05-31 21:10:51 · 428 阅读 · 0 评论 -
bzoj 2594: [Wc2006]水管局长数据加强版 link cut tree
DescriptionSC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到一条从A至B的水管的路径,接着通过信息化的控制中心通知路径上的水管进入准备送水状态,等到路径上每一条水管都准备好了,供水公司就可以开始送水了。嘟嘟一次只能处理一项送水任务,等到当前的送水任务完成了原创 2016-09-09 22:30:30 · 697 阅读 · 0 评论 -
bzoj 3669: [Noi2014]魔法森林 link cut tree
Description为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M。初始时小E同学在号节点1,隐士则住在号节点N。小E需要通过这一片魔法森林,才能够拜访到隐士。魔法森林中居住了一些妖怪。每当有人经过一条边的时候,这条边上的妖怪就会对其发起攻击。幸运的是,在号节点住着两种原创 2016-09-10 07:50:00 · 465 阅读 · 0 评论 -
bzoj 4883: [Lydsy2017年5月月赛]棋盘上的守卫 最小生成树
题意在一个n*m的棋盘上要放置若干个守卫。对于n行来说,每行必须恰好放置一个横向守卫;同理对于m列来说,每列必须恰好放置一个纵向守卫。每个位置放置守卫的代价是不一样的,且每个位置最多只能放置一个守卫,一个守卫不能同时兼顾行列的防御。请计算控制整个棋盘的最小代价。 2<=n,m<=100000,n*m<=100000分析首先很直观的想法就是费用流(据说可以大力艹过去),但复杂度毕竟是玄学。 我们把原创 2017-05-09 20:33:44 · 582 阅读 · 0 评论 -
bzoj 3007: 拯救小云公主 最小生成树
题意英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主。 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss。当英雄意识到自己还是等级1的时候,他明白这就是一个不可能完成的任务。 但他不死心,他在想,能不能避开boss去拯救公主呢,嘻嘻。 Boss的洞穴可以看成一个矩形,英雄在左下角(1,1),公主原创 2017-04-27 21:08:26 · 623 阅读 · 0 评论 -
bzoj 2395: [Balkan 2011]Timeismoney 最小乘积生成树
题意有n个点和m条边,每条边有两个属性s和t,求一棵生成树,使得选出的n-1条边的sigma(s)*sigma(t)最小。 n≤200,m≤10000,s,t≤255n≤200,m≤10000,s,t≤255n\le200,m\le10000,s,t\le255分析最小乘积生成树模板题。 把每一棵生成树看做平面上的一个点(x,y),其中x等于sigma(s),y等于sigma(...原创 2018-05-29 17:10:48 · 287 阅读 · 0 评论