![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
生成树
文章平均质量分 53
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[欧拉回路 最小生成树] IOI 2016 Roller Coaster Railraod
就是杜老师说的这样啦#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,原创 2017-01-03 17:38:31 · 1530 阅读 · 0 评论 -
[LCT 动态最大生成树] HDU 5398 GCD Tree
一个数肯定是和自己约数连更优那么就是动态维护最小生成树两个log#include #include #include #include#include#include using namespace std; typedef pair abcd;typedef long long ll; inline char nc(){ static原创 2016-12-19 20:27:17 · 494 阅读 · 0 评论 -
[最小直径生成树 模板题] BZOJ 2180 最小直径生成树 & BZOJ 2182 [Spoj1479] TGK & Ural 1569 Networking the “Iset”
我不会啊 老老实实去学吧 求图的绝对中心 && 最小直径生成树 MDST 绝对重心呢 就是枚举每一条边 然后从这条边上某个坐标 到所有点的最小距离是一条折线 然后用这一组折线乱搞就好了怎么求MDST呢 从绝对重心跑一边最短路径树就好了#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>using n原创 2017-02-14 16:23:45 · 951 阅读 · 0 评论 -
[Boruvka算法 曼哈顿距离最大生成树] 省选模拟赛 4 C. 树树树 mst
题目大意 求曼哈顿距离最大生成树 n≤100000n\leq 100000Boruvka算法是什么呢 也就是说 我们只要每次求一个连通块连出去的最远的边 把这些边都加入 只要这样 O(logn)O(\log n)就能得到一棵最大生成树每次求两个连通块之间最大边的时候,就是求 |xi−xj|+|yi−yj||x_i − x_j| + |y_i − y_j| 的最大值,分情况用set维护即可。但是神原创 2017-03-18 20:49:12 · 3036 阅读 · 2 评论 -
[最小极差生成树 LCT || 二分答案 CDQ分治 并查集] Ural 2055 Urban Geography
把边按权值大小排序 然后用LCT按时间维护下最大生成树 就好了#include<cstdio>#include<cstdlib>#include<algorithm>#include<stack>#include<set>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;原创 2017-03-04 09:28:23 · 776 阅读 · 0 评论 -
[XOR最小生成树 期望 DP] BZOJ 4770 图样
myh的题解 orzz 实现起来有点细节要处理 可能是我太弱?我就这么写了个记忆化搜索 结果极限数据要3.5s 然后我就活生生的被卡常了#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define read(x) scanf("%d",&(x))using namespace std;type原创 2017-03-12 11:35:30 · 1301 阅读 · 3 评论 -
[矩阵树定理 拉格朗日插值] TCO14 Round 3B TreeDistance
考虑两棵树,最少需要多少步把其中一棵变成另一棵? 可以发现答案就是不同的边数。即存在于A中而不存在于B中的边 数。 相当于要求:有多少带标号无根树,只有≤ kk 条原树中没有的边? 把原树中的边设成11,不在原树中的边设成xx,跑矩阵树定理,得出 来是一个nn阶多项式。 xi(i≤k)x_i(i ≤ k)前的系数和就是答案// BEGIN CUT HERE #include<coni原创 2017-04-04 13:18:28 · 830 阅读 · 0 评论 -
[矩阵树定理] BZOJ 3534 [Sdoi2014]重建
这里有个奇怪的词条 变元矩阵-树定理 也就是说 基尔霍夫矩阵的任意一个代数余子式是所有生成树的边权积的和 我们直接会得出∑T∏e∈Tpe\sum_T \prod_{e\in T} p_e 但这样不对 应该是 ∑T(∏e∈Tpe∏e∉T(1−pe))\sum_T ( \prod_{e\in T} p_e \prod_{e\notin T} (1-p_e) ) 所以我们变幻一下边权 求出∑T∏e原创 2017-02-17 21:45:15 · 909 阅读 · 0 评论 -
[矩阵树定理 模板题] BZOJ 1016 [JSOI2008]最小生成树计数 & HDU 4408 Minimum Spanning Tree
根据Kruscal算法的过程 我们可以得到一些结论 来自 这里如果 A,BA, B 同为 GG 的最小生成树,且 AA 的边权从小到大为 w(a1),w(a2),w(a3),⋯w(an)w(a_1), w(a_2), w(a_3), \cdots w(a_n),BB 的边权从小到大为 w(b1),w(b2),w(b3),⋯w(bn)w(b_1), w(b_2), w(b_3), \cdots w原创 2017-02-17 21:30:46 · 506 阅读 · 0 评论 -
[字典树 最小树形图] Codeforces Gym 100307 NEERC 13 D. Dictionary
先把所有串建成字典树 字典树上的边 边权为1 然后如果两个点 一个是另一个的后缀 那么就另一个向那一个连0的边 跑一通最小树形图就好了 我不会 拷了个板子 输出方案就很蛋疼了#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>using namespace std;inline char nc(){原创 2017-04-18 21:17:47 · 647 阅读 · 0 评论 -
[动态最小生成树 CDQ分治] SnackDown 2017 Online Elimination Round #GQUERY Game Revisited
给每条边的权值赋为编号 那么就相当于一个做kruskal的过程 也就是一个最小生成树的过程 跟BZOJ 2001 [Hnoi2010]City 城市建设一样? 被阿爷教导了 多年前的模板又臭又长#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef pair<int,int> abc原创 2017-06-06 15:15:58 · 596 阅读 · 0 评论 -
[Prufer序列推论] SRM 697 div1 ConnectedStates
首先根据可图性判定定理,可以发现任意一个和为2(n−1)2(n-1)的度数序列都存在方案,然后就是对于一个度数序列求生成树个数,根据Prufer推论,答案应该是 ∑{di}(n−2)!∏ni=1(di−1)!\sum_{\{ d_i\}} {(n-2)!\over \prod_{i=1}^n (d_i-1)!}这个直接做是O(n3)O(n^3)优化成O(n2)O(n^2),参见大佬的题解// BEG原创 2017-06-29 19:02:59 · 470 阅读 · 0 评论 -
[高斯消元 线性基 生成树 随机化权值Xor] BZOJ 3569 DZY Loves Chinese II
很好的建图姿势:我们找到这个图的任意一棵生成树 然后对于每条非树边将其的权值赋为一个随机数对于每条树边 我们将这条树边的权值设为所有覆盖这条树边的边权的异或和那么图不连通当且仅当删除一条树边和覆盖这条树边的所有边集 而由于刚才的处理一条树边和覆盖这条边的所有边集的异或和为零于是问题转化成了对于给定的k条边是否存在一个边权的异或和为零的子集 果断高斯消元 由于使用原创 2016-06-06 06:54:51 · 592 阅读 · 0 评论 -
[Kruscal 二分] BZOJ 2654 tree
Orz hzwer给白色边都加上一个值,做mst会使得选取的白边数量减少,所以可以二分它hillan 说 此题由于数据有问题 并没有保证一定能生成有need条白色边的生成树所以大家二分答案的时候全加上Mid 之后再减去Mid*(n-1-ned)#include#include#includeusing namespace std; inline ch原创 2016-06-24 23:35:53 · 466 阅读 · 0 评论 -
[网格最小生成树] BZOJ 4242 水壶
平面网格上的最小生成树还可以这么做 Orzbfs一遍#include#include#include#includeusing namespace std;typedef pair abcd;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2原创 2016-06-06 07:01:28 · 1273 阅读 · 0 评论 -
[曼哈顿距离最小生成树 模板题] POJ 3241 Object Clustering
我不会啊 老老实实去学 曼哈顿距离最小生成树 以一个点为原点建立直角坐标系,在每45度内只会向距离该点最近的一个点连边 这样只会有O(n)O(n)条边 怎么求最近点 是个二维偏序 排完序后 树状数组维护即可#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>using namespace std;ty原创 2017-02-14 16:26:38 · 358 阅读 · 0 评论 -
[AND最大生成树 分治 Trie || Kruskal] UOJ Goodbye Yiwei C #176. 新年的繁荣
这个直接上题解吧 :http://vfleaking.blog.uoj.ac/blog/1244Kruskal 用尛焱轟的话来说就是枚举边权 可以发现一种边权最多只有O(m)个联通块需要合并 O(m 2^m a(n))#include#include#includeusing namespace std;typedef long long ll;inli原创 2016-12-23 16:12:28 · 640 阅读 · 0 评论 -
[最小k度限制生成树] POJ 1639 Picnic Planning
论文:汪汀--最小生成树问题的拓展另见:http://blog.csdn.net/jarily/article/details/8779621 http://www.cnblogs.com/ylfdrib/archive/2010/08/21/1805505.html主要思想:先求出最小m度限制生成树 由最小m度限制生成树找环得到最小m+1度限制生成树实现么 Prime/Kruskal原创 2016-12-11 10:43:10 · 339 阅读 · 0 评论 -
[生成树 MatrixTree定理] BZOJ 1016 [JSOI2008]最小生成树计数
很久以前做的题了看到zhanghanchong神犇在做有两个结论最小生成树的两个性质:1、边权相等的边的个数一定。2、做完边权为w的所有边时,图的连通性相同。有了这两个结论 每种权值 个数少可以爆搜hzwer的代码#include#include#include#include#define mod 31011using names原创 2016-08-23 18:32:23 · 483 阅读 · 0 评论 -
[瓶颈生成树] BZOJ 2429 [HAOI2006]聪明的猴子
裸的瓶颈生成树为什么大家打的都是kruskal原创 2016-08-23 18:21:01 · 341 阅读 · 0 评论 -
[动态最小生成树 CDQ分治 Kruscal] BZOJ 2001 [Hnoi2010]City 城市建设
思路不难想 借鉴了其他人的代码:http://blog.sina.com.cn/s/blog_6e63f59e0101blum.html两个关键的操作:Reduction(删除无用边):把待修改的边标为INF,做一遍MST,把做完后不在MST中的非INF边删去(因为这些边在原图的情况下肯定更不可能选进MST的边集,即无用边);Contraction(缩必须边,缩点):把待修原创 2016-07-13 16:19:54 · 923 阅读 · 0 评论 -
[最小方差生成树 Kruskal] SRM 611 500pts
题目大意:小R计划给小Z买一个很大的庄园,庄园里的建筑可以抽象为二维平面坐标系上的N个点。对于任意两个点,他都可以修建一条笔直的公路使它们相连(该公路的长度即为两点的欧式距离) 。为了能腾出更多的资金给小Z买礼物,小R要恰好修建N-1条公路,使得任意两个建筑都能直接或者间接的到达。但小R有强迫症。他要使他修建的道路长度的这个数列的标准差尽量的小。设他修建的N-1条道路的原创 2016-07-04 20:52:42 · 801 阅读 · 0 评论 -
[主席树 Kruscal] BZOJ 3545 [ONTAK2010]Peaks & 3551 [ONTAK2010]Peaks加强版
Orz hzwer据出题人的做法。。。就是做最小生成树,但合并两结点x,y的时新建结点ext,把ext连向fa(x),fa(y)这样建出一棵树,ext的权为该边的边权找一个点v不超过x的子树的根,可以用倍增,以它为根的子树就是v不超过x所能到达的连通块dfs序+主席树就行了。。#include#include#include#defin原创 2016-06-24 23:28:13 · 416 阅读 · 0 评论 -
[次小生成树] Prime Kruskal
Prime#include#include#include#define MAXINT 2147483647/2using namespace std;int a,b,w,n,m,t,tot,ntot=MAXINT;int e[5001][5001],flag[5001],pre[5000],dis[5001];int maxd[5000][5000];inline int原创 2016-02-04 20:21:12 · 727 阅读 · 1 评论 -
[XOR最小生成树 分治 Trie || Prim 堆] BNUOJ 52318 Be Friends
关于位运算生成树问题 尛焱轟在APIO上专门讲过 一些杂七杂八的东西不过还是没怎么搞清楚这个可以分治 显然对于最高位 为0的一团 为1的一团 那么只需要找最小的一条边连接 这个可以在其中一半枚举 另一半建成Trie在上面查询然后分治到低一位#include#include#include#includeusing namespace std;typ原创 2016-12-23 16:20:18 · 908 阅读 · 0 评论 -
[伪位运算生成树] HDU 5629 Clarke and tree
求边权and和最大生成树从高位到低位枚举 看这位为1的以及满足当前答案(答案上为1的位 则边权这一位也要为1)的边是否能构成一棵生成树#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) {原创 2016-12-26 20:49:18 · 404 阅读 · 0 评论 -
[LCT维护最小生成树 || CDQ分治 || 线段树 并查集 dfs树] Codeforces 603E #334 (Div. 1) E. Pastoral Oddities
这是个好题啊 这种数据结构题和dfs树有什么关系呢 唯一的关系就是一个联通块当且仅当有偶数个点时能满足存在边集的一个子集每个点度数为奇数或者更一般的结论 当一个联通块中每个点的度数奇偶性要求之和是偶数 那么存在然后我们就转化为一些边使得每个联通块为偶数这个出题人的标算我没看懂啊 LCT在线维护最小生成树?http://codeforces.com/blog/entry/21原创 2017-01-04 16:45:31 · 1323 阅读 · 0 评论 -
[BFS Tarjan_LCA 生成树] CERC 2016 H Hangar Hurdles
就是题解写的这样了#include#include#include#include#define X first#define Y secondusing namespace std;typedef pair abcd;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;原创 2016-12-23 16:53:40 · 809 阅读 · 0 评论 -
[对偶 KM算法 生成树 || 最大费用可行流 || 线性规划] BZOJ 1937 [Shoi2004]Mst 最小生成树
树边减,非树边加,wi表示i号边原来的边权,di表示i号边的改变量对于一条非树边,覆盖所有树边,都要满足:wi−di≤wj+dj得wi−wj≤di+dj这样的话d就是KM算法里的顶标跑最大匹配即可#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace原创 2016-07-04 18:44:48 · 919 阅读 · 0 评论 -
[最小生成树] Codeforces 632F Educational Codeforces Round 9 F. Magic Matrix & SRM 687 div1 AllGraphCuts
Magic Matrix把aa矩阵当成邻接矩阵,设bb为两点间路径最大值的最小值,那么ai,j≥bi,ja_{i,j}\ge b_{i,j},然后ai,j≤max(ai,k1,ak1,k2,⋯,akm,j)a_{i,j}\le \text{max}(a_{i,k_1},a_{k_1,k_2},\cdots,a_{k_m,j}),所以ai,j≤bi,ja_{i,j}\le b_{i,j} 那么a=b原创 2017-07-09 08:09:30 · 462 阅读 · 0 评论