题目1 : 最小生成树三·堆优化的Prim算法时间限制:10000ms单点时限:1000ms内存限制:256MB描述回到两个星期之前,在成功的使用Kruscal算法解决了问题之后,小Ho产生了一个疑问,究竟这样的算法在稀疏图上比Prim优化之处在哪里呢?提示:没有无缘无故的优化!输入每个测试点(输入...
分类:
编程语言 时间:
2015-06-02 14:39:50
阅读次数:
844
var n,m,s,t,v,i,a,b,c:longint; first,tr,p,q:array[0..20000]of longint; next,eb,ew:array[1..100000]of longint;procedure swap(a,b:longint);var t:l...
分类:
其他好文 时间:
2015-05-25 22:14:24
阅读次数:
139
转载请注明出处 [ametake版权所有]http://blog.csdn.net/ametake
先放上题目,出自USACO
题目描述 Description
农夫John发现做出全威斯康辛州最甜的黄油的方法:糖。把糖放在一片牧场上,他知道N(1
农夫John很狡猾。他知道他可以训练这些奶牛,让它们在听到铃声时去一个特定的牧场。他打算将糖放在那里然后下午发出铃声,以至他...
分类:
其他好文 时间:
2015-05-23 11:34:54
阅读次数:
261
这个题目思路是很简单的,我们只需要枚举每个定点作为目的地,然后再取其中距离总和最小的作为答案.开始的时候我用的是floyd一次就将所有点之间的最小距离求出来,但是超时了.
后面用的每次枚举一个点就用堆优化的求一次这个点到其余点的最短路,这样就可以过了.代码如下:/*
ID: 15674811
LANG: C++
TASK: butter
*/#include
#include<...
分类:
编程语言 时间:
2015-05-19 22:46:37
阅读次数:
152
之前刚刚写了一道“香甜的黄油”,是USACO的经典题目了。那道题用SPFA怎么找都过不了,看着别人的PAS轻松过各种拙计。黄学长说最佳方案应当是堆优化的dij,我还没有血,等学了那个之后再写黄油题解吧。
题目:
题目描述 Description
在星系1 的某颗美丽的行星之上.某陈将去标号为N 的星系,从星系g1 到达g2,某陈需要花费c1 的代价[主要是燃料,另外还有与...
分类:
编程语言 时间:
2015-05-19 19:09:33
阅读次数:
130
前面说到“原生的Dijkstra”,由于Dijkstra采用的是贪心策略,在贪心寻找当前距离源结点最短的结点时需要遍历所有的结点,这必然会导致效率的下降,时间复杂度为n^n。因此当数据量较大时会消耗较长时间。为了提高Dijkstra的效率,只有对Dijkstra的贪心策略进行改进。
由于Dijkstra采用的贪心策略是每次寻找最短距离的结点并将其放入存放所有已知最短距离结点的S集合中,可以联想到堆以及优先级队列这些数据结构,这些结构都能非常高效地提供当前状态距离最短的结点。实践也可以证明这两种优化对于Dij...
分类:
其他好文 时间:
2015-05-11 10:59:32
阅读次数:
190
前面分别介绍了“原生的Dijkstra”即毫无优化的Dijkstra,但这种Dijkstra的效率较低为n^n,因此面对较大数据量的时候需要对其进行优化,也就是优化所采用的贪心策略的实现,因此就有了Heao+Dijkstra堆优化的Dijkstra,但是堆优化的实现很复杂,而PriorityQueue+Dijkstra优先队列优化的Dijstra的效率虽然略低于堆优化的Dijkstra,但是实现却容易的多,也不容易出错,因为可以借助java类库中的PriorityQueue来实现,因此优先队列优化的Dijk...
分类:
Web程序 时间:
2015-05-11 10:55:46
阅读次数:
362
最短路+堆优化。普通的堆还不行,自己用的是配对堆(貌似斐波那契堆也行?毕竟理论复杂度)然后发现自己的配对堆比云神的不知快了多少。。。我照着他的模版打的喂。。然后发现前T条边不理都能A。。。数据啊数据233#include #include #include #include #include #in...
分类:
其他好文 时间:
2015-05-05 16:26:59
阅读次数:
111
这题思路也很简单,就是用一个最大堆堆去维护Prim算法中的Low数组,把刷新Low数组的操作,变成了刷新堆的操作,由于堆的插入操作位logn,查询时间为常数,因此在边稀疏的情况下,其复杂度与Kruscal接近。这题刚开始老是WA,想了很久,不知道错在哪里,后来发现时因此不能直接去堆中的最小路径,因为...
分类:
编程语言 时间:
2015-04-13 00:10:33
阅读次数:
190
1 typedef pair pii; 2 struct Edge { 3 int v, w; 4 int next; 5 }edge[MAXM]; 6 int head[MAXN], d[MAXN], tot; 7 bool vis[MAXN]; 8 void addedge(i...
分类:
其他好文 时间:
2015-04-10 21:53:51
阅读次数:
109