Visitors hit counter dreamweaver
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 26 下一页
摘要: 这是求所有节点间最短路径的题。果断用floyd,三个for循环就OK!如果不懂floyd,请看这里。题意有点绕。。。我不知道怎么描述,看了discuss里面有个人的解释,非常好。请看下面:释疑:- 一个人可以同时给几个人发送消息- 结束状态必须是所有人都受到了消息思路:1. 通过Stockbrokers(SB?)i发消息,所有人同时收到所花时间 (可以是无穷哦~)2. 找出第一步所得结果中的值最小的那一个3. 如果第二步所得结果为无穷,说明此图不可联通~#include <iostream>#include <fstream>using namespace std;#d 阅读全文
posted @ 2012-04-24 11:53 Jason Damon 阅读(1107) 评论(0) 推荐(0) 编辑
摘要: 这题是个简单的Dijkstra问题。关键是在输入。我的那个输入方法是看discuss别人给出的。如不用这个的话我们可以把字符串转换为数字。还有就是它题目要求的是到所有节点d的最短路径中最大的那个cost!#include <iostream>#include <fstream>using namespace std;#define LEN 101#define INF (1<<30)#define MAX(a,b) (a>b?a:b)int n,dist[LEN];int map[LEN][LEN],maxcost;bool v[LEN];void D 阅读全文
posted @ 2012-04-22 22:36 Jason Damon 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 这是我的第一题dijkstra,开始我还是不会把题目的要求转换为要实际的模型,还是看了mengxm的这篇题解,才有了真正的认识,而且他的代码非常简洁,看起来很舒服,学习了!在此次谢谢他。 这题的关键是要有等级的限制,即不能超过等级限制的范围,因此在这里我们可以用一个abs(a-b)<=m来判断是否超出范围,超出了就不考虑了。边的权值就是优惠的值,而最后要求的min_cost则是所有边的和加上最后一个节点的值。其它的就直接套Dijkstra算法就OK了~ 呼呼~#include <iostream>#include <fstream>using namespace 阅读全文
posted @ 2012-04-22 17:39 Jason Damon 阅读(727) 评论(0) 推荐(0) 编辑
摘要: 这题是用bellman-ford求负权回路的问题。数组一定要开5100以上,不然会RE。这是我写的第二题Bellman-ford,写得很顺手了。加油加油~#include <iostream>#include <fstream>using namespace std;#define MAX 5100#define FAR 10001int k,n; //k为边数 n为顶点数int dist[MAX];struct node{ int start,end; int weight;}edge[MAX];bool Bellman_ford(){ int s,e,t; in.. 阅读全文
posted @ 2012-04-21 16:13 Jason Damon 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 本题用beffman-ford的思想,来求正环回路,一般是用来求负环回路的,但这里只要把比较大小符号转换一下就行了,反正两个都说明图不是收敛的。因为这是第一次做 beffman-ford的题。主要参考了http://blog.sina.com.cn/s/blog_6635898a0100kxu2.html。谢谢他。 加油吧,孩子,不断进步!!#include <iostream>#include <fstream> using namespace std;#define MAX 201int n,m,nums; //n货币种类,m汇率站点数,s Nick手中的货币种类d 阅读全文
posted @ 2012-04-21 00:54 Jason Damon 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 摘自百度百科 Bellman-ford算法是求含负权图的单源最短路径算法,效率很低,但代码很容易写。即进行不停地松弛(relaxation),每次松弛把每条边都更新一下,若n-1次松弛后还能更新,则说明图中有负环(即负权回路,本文最后有解释),无法得出结果,否则就成功完成。Bellman-ford... 阅读全文
posted @ 2012-04-21 00:45 Jason Damon 阅读(6531) 评论(0) 推荐(0) 编辑
摘要: 我的思路: 先把每个数的出现的次数和下标记录,所以用到一个数据结构Node{num,points}。然后先根据points值排序,那么node[0].points就是最大值,然后我们就可以得到第二大的值,和他的位置,然后再把第二大的值的num排序一下,就可以输出了。因为我不想用那么多次for循环,所以用了两次排序。其实这题也可以用三次for来求出,但事先要先求出最大值和第二的的值。我比较了下,简单的for和我的这种方法,我的是150+ms,那个是200ms。 还是快一点点的,哈哈#include <iostream>#include <cstdlib>#include 阅读全文
posted @ 2012-04-20 13:02 Jason Damon 阅读(1584) 评论(1) 推荐(0) 编辑
摘要: 转自:http://www.sunhongfeng.com/2011/07/%E5%8D%95%E8%B0%83%E9%98%9F%E5%88%97-poj2823/ 他的分析非常到位,顺便把单调队列给学了。很好,所以转了他的这篇文章。程序是我后来理解之后自己写的。看这个问题:An array of size n ≤ 106 is given to you. There is a sliding window of size k which is moving from the very left of the array to the very right. You can only se. 阅读全文
posted @ 2012-04-19 21:33 Jason Damon 阅读(8450) 评论(3) 推荐(0) 编辑
摘要: 对于堆的数据结构的介绍,在网上搜了下,具体讲的不是很多。发现比较好的一篇介绍堆的博客是http://dongxicheng.org/structure/heap/。在此感谢他。通过对上面那篇博客的学习,然后自己也去翻了下《算法导论》里面关于堆排序(heapsort)的介绍。这样就对堆有了更加深刻的认识,在此,我结合自己的一点点理解,主要还是基于上面那篇博客的内容(主要也是《算法导论》里的内容),也把他里面程序的一些错误改正,我把这篇博客写了出来,以加深对堆的认识,并供自己日后温习。后面我还要练习poj上几天关于堆的题目,链接会在后面给出。1.堆 堆数据结构是一种数组对象,它可以被视为一科完全. 阅读全文
posted @ 2012-04-18 00:00 Jason Damon 阅读(43174) 评论(2) 推荐(5) 编辑
摘要: 再次做并查的题目。本题用kruskar方法做。我开始没有按秩(即所包含的层数)来union_set结果WA,后来改了之后就AC了。为什么呢??不管,以后记得要加上按秩来合并吧。 这题有个技巧就是只用输入上半个矩阵就OK了,因为是对称的。看别人用prim方法做也挺简单的,接下来来学习一下prim算法吧。 kruskar:#include <iostream>#include <fstream>#include <algorithm>using namespace std;#define MAX 101int father[MAX];int rank[MAX]; 阅读全文
posted @ 2012-04-17 12:11 Jason Damon 阅读(355) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 26 下一页