
生成树
文章平均质量分 83
huanghongxun
这个作者很懒,什么都没留下…
展开
-
POJ 3522 Slim Span 生成树
http://poj.org/problem?id=3522 求使最大边权差最小的生成树。分析一下问题性质。最大边权差最小?差即是最大边权减去最小边权,要使答案区间长度最小,一种可能的方法便是扫描线,即枚举区间的一个端点,快速判断另一个端点的最优位置。回到本题,kruskal的性质很明了,由于一直是从小到大依次贪心地枚举边,因此kruskal运行完成即满足最大边尽可能小的要求。因此区间另一端点的最原创 2016-03-06 10:57:52 · 547 阅读 · 0 评论 -
POJ 1679 The Unique MST 次小生成树
http://poj.org/problem?id=1679 问图的最小生成树是否唯一。 如果次小生成树结果=最小生成树,那么最小生成树就不唯一。 暴力删属于最小生成树的边,在跑kruskal即可。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct Edge { int u,原创 2016-03-06 11:54:18 · 536 阅读 · 0 评论 -
POJ 3164 Command Network 最小树形图
#include #include int u[M], v[M], x[M], y[M];double w[M];double edmonds(int rt, int n, int m) { int i, a, b; double ans = 0; while (1) { memset(in, 127, sizeof in); FOR原创 2016-03-06 23:07:38 · 456 阅读 · 0 评论 -
POJ 2728 Desert King 01分数规划 最优比率生成树
求一个生成树使得费用与距离比值最小。01分数规划的话,考虑改写式子。 ∑costi,j∑disi,j≥p\frac{\sum cost_{i,j}}{\sum dis_{i,j}}\geq p 其中p是最终答案,变形得 ∑(costi,j−p×disi,j)≥0\sum(cost_{i,j}-p\times dis_{i,j})\geq 0 考虑二分答案,然后按照上式构造一个新图,求最大生成原创 2016-03-06 12:07:43 · 486 阅读 · 0 评论 -
BZOJ 2260 商店购物 & 4349 最小树形图
BZOJ 4349标题强行提示做法,样例和2260一样,出题人真是太懒了。。发现对于某种物品,其购买量对方案是没有影响的,因此我们只考虑购买量为1的情况。建立虚点连向所有顶点,那么跑一次最小树形图即可。 另外购买量为0的点可以直接删了。#include <cstdio>#include <cstring>#include <cmath>#define ms(a,b) memset(a,b,s原创 2016-03-07 19:07:16 · 753 阅读 · 0 评论 -
BZOJ 2395 Balkan 2011 Time is Money 最小乘积生成树
网上题解讲的好清楚好清楚了。。令x=∑c,y=∑tx=\sum c,y=\sum t,要最优化xyxy,如果将其表示成(x,y)(x,y),那么最优的(x,y)(x,y)只会在下凸壳上,那么分治? 分治将凸壳不断地划分,至于划分点有一个很显然的在凸壳上的就是离两端点最远的点C(在坐标轴侧)。 求C显然是最大化S△ABC=12AB×d=12AC−→−×AB−→S_{\triangle ABC}=\原创 2016-03-12 12:49:26 · 823 阅读 · 0 评论 -
BZOJ 1016 JSOI 2008 巨额奖金 最小生成树计数
最小生成树有多少个。注意到最小生成树中选了相同权值的边多少条是不变的。有kruskal可知。 因此考虑在求出最小生成树后枚举每种权值的边。 然后所有情况乘起来即可。#include <cstdio>#include <cstring>#include <vector>#include <algorithm>#define FOR(i,j,k) for(i=j;i<=k;++i)#def原创 2016-04-17 23:56:06 · 860 阅读 · 0 评论