最小-最大生成树
LowestJN
强省弱OIer
展开
-
[BZOJ2177][最小/最大(曼哈顿距离)生成树]曼哈顿最小生成树
题意给定平面内一些点,求最小曼哈顿距离生成树看这篇咯http://blog.csdn.net/acm_cxlove/article/details/8890003#include <cstdio>#include <string>#include <cstring>#include <iostream>#include <algorithm>#define N 100010#define原创 2017-03-17 19:39:02 · 2289 阅读 · 0 评论 -
[最小基环生成树] Codeforces875F .Royal Questions
考虑在 aia_i 和 bib_i 之间连一条 wiw_i 的边这样会形成一个无向图。如果一个公主嫁给一个王子,就相当于给一条边定向,每个点只有一个入点如果把结果图拿出来,那么就是一棵基环树。求个最大基环生成树就好了以后打CF要先把题看完×2#include <cstdio>#include <algorithm>#include <iostream>#include <vector>usin原创 2017-10-17 18:21:35 · 722 阅读 · 0 评论 -
[最小斯坦纳树] Baltic OI 2016. Cities
应该最小斯坦纳树裸题吧…加个spfa的那个优化就可以了#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <queue>using namespace std;typedef long long ll;const int N=100010;int n,k,m,cnt,G[N];原创 2017-10-28 21:05:37 · 824 阅读 · 0 评论 -
[GCD最大生成树 LCT] HDU5398 .GCD TREE
可以发现只要保留边 (i,j)(i,j) 其中 ii 整除 jj 的边就行了用LCT来维护最大生成树就可以了#include <cstdio>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int N=1500010;int n,cnt,m;struct iedge{原创 2017-10-23 15:06:20 · 587 阅读 · 0 评论 -
[xor最小生成树 分治 字典树合并] BNUOJ52318 Be Friends
二进制从高到低分治,当前分治到第 ii 位那么肯定是把第 ii 位为0的放一起,为1的放一起,这两块分别成一个联通块,然后之间连一条边是最优的两块分治下去。找最小边的话一边建字典树,另一边的数在字典树上找#include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int N=100010;ty原创 2017-10-23 20:06:40 · 490 阅读 · 0 评论 -
[欧拉回路 最小生成树] UOJ#236 -- IOI2016. railroad
对每个速度建一个点,ss 向 tt 连一条边,那么就是要再加一些边使得能走过所有边。加一条 inf\inf 到 11 的边,题目就转换为求最小代价使图变成欧拉图考虑这样一个区间 [i,i+1][i,i+1] , 只有满足 s≤i,t≥i+1s\le i,t\ge i+1 的边与满足 t≤i,s≥i+1t\le i ,s\ge i +1 的边的个数相同时图才可能是欧拉图。令 gig_i 等于第一种边的原创 2017-10-24 17:07:17 · 794 阅读 · 0 评论 -
[最小生成树 并查集] Codechef October Challenge 2017 .Lucky Edge
O(n)O(n) 枚举左端点,然后往右做一棵以编号为权值的最小生成树,每一条非树边覆盖的树边的编号一定小于它。那么再从左往右扫每条非树边,会对它覆盖的树边加上 n−i+1n-i+1 的贡献,但是树边只能被加一次所以可以用并查集把加过的树边的两个端点缩起来。这样也就不需要求LCA了O(n2α)O(n^2\alpha)然后卡卡常就好了…#include <cstdio>#include <iostre原创 2017-10-17 07:54:34 · 482 阅读 · 0 评论