题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1116解题报告:一个国家有n个城市,有m条路可以修,修每条路要一定的金币,现在这个国家只有K个金币,每个城市有一些人,要你求怎么修路使得总的费用在K的范围内,同时使得跟首都连接的城市的人口(...
分类:
其他好文 时间:
2014-10-07 18:29:43
阅读次数:
186
orz,感觉对最小生成树的理解又加进了一步。ps:不得不说对于经典算法的探究是永无止境的,只能通过交流和增长见识来学习和体会,自己研究确实困难。让我们来深入分析一下kruskal算法。算法过程不多说,直接证明:假设算法考虑到第k条边,这时发现边的两端已经在同一个连通块里面了(称为“冲突”),为了使这...
分类:
Web程序 时间:
2014-10-07 17:41:53
阅读次数:
151
题意:
给出一个无向图,每条边都已染色(黑/白),问是否存在生成树,该生成树的白色边的数量是正的fibonacci数。
分析:
所给数据中黑边为0,白边为1,那么生成树的白边数量即为生成树的权和。
然后YY了一个做法:求其最小和最大生成树,如果在这个范围内存在fibonacci数则存在。
靠谱的证明方法一直没想出来,这里随便解释下:
对于任意一颗非最大生成树,一定可以取一条白边换一条黑边使其仍然是一颗树。...
分类:
其他好文 时间:
2014-10-06 22:01:01
阅读次数:
208
一,什么是最小生成树
1,什么是生成树
如果连通图G的一个子图是一棵包含G所有顶点的树,则该子图成为G的生成树。
生成树是含有该连通图全部顶点的一个极小连通子图,它并不是唯一的,从不同的顶点出发可以得到不同的子树。含有N个顶点的连通图的生成树有N-1条边。
2,如何求一个连通图
的生成树
要求一个连通图的生成树只需要从一个顶点出发,做一次深度优先或...
分类:
其他好文 时间:
2014-10-04 20:58:47
阅读次数:
155
理论:Prim:基本思想:假设G=(V,E)是连通的,TE是G上最小生成树中边的集合。算法从U={u0}(u0∈V)、TE={}开始。重复执行下列操作:在所有u∈U,v∈V-U的边(u,v)∈E中找一条权值最小的边(u0,v0)并入集合TE中,同时v0并入U,直到V=U为止。此时,TE中必有n-1条...
分类:
其他好文 时间:
2014-10-04 20:02:37
阅读次数:
503
跟去年NOIP某题基本一样。最小生成树之后,就变成了询问连接两点的路径上的权值最大的边。倍增LCA、链剖什么的随便搞。块状树其实也是很简单的,只不过每个点的点权要记录成“连接其与其父节点的边的权值”,然后暴力LCA时不要用LCA的值更新答案了。 1 #include 2 #include 3 ...
分类:
Web程序 时间:
2014-10-04 10:29:26
阅读次数:
454
题目大意:给定一个n个点m条边的无向连通图,k次询问两点之间所有路径中最长边的最小值
NOIP2013 货车运输,几乎就是原题。。。只不过最小边最大改成了最大边最小。。。
首先看到最大值最小第一反应二分答案 但是二分答案O(kmlogn)明显做不了 这里我们考虑最小生成树
先生成一棵最小生成树,然后每次询问利用倍增LCA求出路径上的最大权值即可
本蒟蒻居然把LCA写挂了。。。 而且样例还过...
分类:
Web程序 时间:
2014-10-03 17:28:54
阅读次数:
275
SB题,求最小生成树,其中有些边已经给您建好啦。随意暴力即可。 1 #include 2 #include 3 #include 4 using namespace std; 5 int rank[10001],fa[10001],n,m,a[101][101],q,x,y,f1,f2,ans; 6...
分类:
其他好文 时间:
2014-10-03 16:17:54
阅读次数:
209
题意:给你一棵数的距离矩阵,问你这个矩阵是否合法解题思路:利用树的性质进行prime 和连边,产生最小生成树,最后看最小生成树是否和给出的一致就行解题代码: 1 // File Name: d.cpp 2 // Author: darkdream 3 // Created Time: 2014...
分类:
其他好文 时间:
2014-10-03 01:04:13
阅读次数:
294
POJ 1861 & ZOJ 1542 Network(最小生成树之Krusal)...
分类:
Web程序 时间:
2014-10-02 23:08:43
阅读次数:
277