首先将每个平原缩成一个点,建出图,相邻两个点之间的边权为它们高度的较小值。 用Kruskal算法求出这个图的最大生成树,每次合并两个连通块时新建一个点指向它们,得到一棵有根树。 对于每个点,求出它子树内最高的峰,那么对于每个叶子,在它到根的路径上二分查找即可。 时间复杂度$O(nm\log(nm)) ...
分类:
其他好文 时间:
2016-09-07 19:04:07
阅读次数:
204
二分+kruskal。 为什么老是WA? 23333不管了粘黄学长代码。 ...
分类:
其他好文 时间:
2016-09-06 12:09:59
阅读次数:
119
Kruskal算法就是把图中的所有边权值排序,然后从最小的边权值开始查找,连接图中的点,当该边的权值较小,但是连接在途中后会形成回路时就舍弃该边,寻找下一边,以此类推,假设有n个点,则只需要查找n-1条边即可。 ...
分类:
编程语言 时间:
2016-09-05 21:02:37
阅读次数:
152
针对一些城市之间建造公路或者造桥问题,我们需要的是以最小代价完成任务,看了一下别人的代码,思想其实都是差不多,但是感觉不大好理解,比如Kruskal算法中有人写了利用递归实现判断是否形成环,本人愚钝,...
分类:
编程语言 时间:
2016-09-05 17:19:23
阅读次数:
297
Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光。Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,…,N),这些景点被M(0<M≤5000)条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路。也许是为了保护该地的旅游资源,Z小镇有个奇怪的规定 ...
分类:
其他好文 时间:
2016-09-03 10:54:47
阅读次数:
166
1、HDU 1102 Constructing Roads 最小生成树 2、总结: 题意:修路,裸题 (1)kruskal //kruskal #include<iostream> #include<cstring> #include<cmath> #include<queue> #include< ...
分类:
其他好文 时间:
2016-08-28 01:13:18
阅读次数:
253
Abandoned country Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 4487 Accepted Submission(s): 1 ...
分类:
其他好文 时间:
2016-08-21 16:37:45
阅读次数:
171
两个BUG鸣翠柳,一行代码上西天。。。 hdu4786 Fibonacci Tree(生成树)问能否用白边和黑边构成一棵生成树,并且白边数量是斐波那契数。 题解:分别优先加入白边和黑边,求出生成树能包含白边的最大值和最小值,其间有值为斐波那契数即可。 1 #include<cstdio> 2 #in ...
分类:
其他好文 时间:
2016-08-17 00:08:29
阅读次数:
354
今天刷一下水题练手入门,明天继续。 poj1861 Network(最小生成树)新手入门题。 题意:输出连接方案中最长的单根网线长度(必须使这个值是所有方案中最小的),然后输出方案。 题解:本题没有直接求生成树,但如果连接n个集线器的方案多于n-1条边,那么必存在回路,因此去掉某些边剩下的边和所有顶 ...
分类:
编程语言 时间:
2016-08-16 00:08:38
阅读次数:
248
Description Farmer John变得非常懒, 他不想再继续维护供奶牛之间供通行的道路. 道路被用来连接N (5 <= N <= 10,000)个牧场, 牧场被连续地编号为1..N. 每一个牧场都是一个奶牛的家. FJ计划除去P(N-1 <= P <= 100,000)条道路中尽可能多的 ...
分类:
其他好文 时间:
2016-08-14 19:04:26
阅读次数:
223