Visitors hit counter dreamweaver
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 26 下一页
摘要: 这题把floyd和bellman-ford两种方法都概括了,所以很值得一做。 题意:根据给出的关系图,判断是否存在一条从1到n的路径,且最终的cost值为正值,初始值为100。中间各个room的值有正有负。但在求路径的时候,任何一点的value都不能小于或者等于零,否则这条路就不能通。当然,如果有正环,并且可以从1到n是连通的,那么就一定winnable。 思路:先用floyd判断是否节点的连通性。并且判断1到n是否连通,不连通则hopeless。然后再用bellman-ford来判断1到n是否存在一条正权通路,或者存在正环。当然,dist为负的节点不用去判断,因为如果为负,则这条通路就会成. 阅读全文
posted @ 2012-05-01 18:53 Jason Damon 阅读(454) 评论(0) 推荐(0) 编辑
摘要: 这题比3041要有点难度,主要是在判断节点的时候,要两次扫描输入的矩阵。这个叫我shi也想不到啊。。人家discuss里面给了很好的模板,学着点吧。具体的分析请看下面:转自:http://www.cppblog.com/abilitytao/archive/2009/10/21/99124.aspxSample:4 4*.*..******...*.把行里面连在一起的坑连起来视为一个点,即一块横木板,编上序号,Sample则转化为:1 0 2 00 3 3 34 4 4 00 0 5 0把这些序号加入X集合,再按列做一次则为:1 0 4 00 3 4 52 3 4 00 0 4 0同样加入Y. 阅读全文
posted @ 2012-05-01 00:54 Jason Damon 阅读(234) 评论(0) 推荐(0) 编辑
摘要: http://imlazy.ycool.com/post.1603708.html看了这能很好的理解二分图的最大匹配问题。 这题要会把row和col转换成为两个顶点集,(x,y)看成边。问题就转化成为选择最少的一些点(x或y),使得从这些点与所有的边相邻,其实这就是最小点覆盖问题。在二分图中,最小点覆盖数=最大匹配数。所以可以用匈牙利算法解决。 二分图最大匹配的匈牙利算法看了好久,现在终于有点眉目了。加油哟!!#include <iostream>#include <fstream>using namespace std;#define MAXN 501int N,K; 阅读全文
posted @ 2012-05-01 00:41 Jason Damon 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 这题的意思是要求最短距离中的最大值。一看题目,要求来回的距离,就想到用floyd。看了看数据,觉得不行呀。看了discuss,果然floyd过不了的。看别人推荐的好的方法:1.Dijkstra;2.SPFA.不过两个方法都要用到矩阵的转置。这样才能求到来回的最短路径。第一次是求X到其它各点的最短距离(也即回来的距离),转置后,再次求X到其它点的距离,就可以得到其它各点到X的最短距离。很巧妙! 再次练习Dijkstra方法。要想掌握一个算法,那就必须多次敲!多次!多次!Dijkstra:#include <iostream>#include <fstream>using 阅读全文
posted @ 2012-04-29 17:58 Jason Damon 阅读(1275) 评论(0) 推荐(0) 编辑
摘要: 好久不写心灵日记咯~~最近已经进入了图论算法的学习。已经把单源节点的最短路径算法给看了一遍,并且也做了相应的题。刚刚随便翻了翻我们学习ACM图论算法培训的资料,还有很多要学得呀。。。SPFA,最大流,。。反正好多。慢慢学吧。刚好五一几天。努力去搞吧,弄完图论还有DP呢。最近看了我们学校推免加分规则,校ACM竞赛也能3等奖都能加0.5分。2等能加1分呢。。我觉得自己拿2等应该没问题,加油吧!!好好准备下~呼呼~ 阅读全文
posted @ 2012-04-29 00:58 Jason Damon 阅读(192) 评论(0) 推荐(0) 编辑
摘要: http://www.cppblog.com/mythit/archive/2009/04/19/80470.html (有入门例题)http://blog.csdn.net/moxiaomomo/article/details/5977281http://cuitianyi.com/blog/%e6%b1%82%e6%9c%80%e5%a4%a7%e6%b5%81%e7%9a%84%e4%bd%bf%e7%94%a8%e8%b7%9d%e7%a6%bb%e6%a0%87%e5%8f%b7%e7%9a%84%e6%9c%80%e7%9f%ad%e5%a2%9e%e5%b9%bf%e8%b7%a 阅读全文
posted @ 2012-04-29 00:50 Jason Damon 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 很裸的一道topo_sort题目,题目说,每组数据都会至少有一中排序,所以就不用考虑其它问题了。在这回顾下naive拓扑排序吧。 1.存储节点间的关系; 2.记录每个节点的入度; 3.循环N次,每次得到一个输出,每次循环里都要寻找入度为零的点,并且把它对应的节点的入度减一; 4.直到没有入度为零的点,则结束。#include <iostream>#include <fstream>using namespace std;#define MAXN 105bool adj[MAXN][MAXN];int in_degree[MAXN];int n;int result[MA 阅读全文
posted @ 2012-04-28 12:14 Jason Damon 阅读(2278) 评论(0) 推荐(0) 编辑
摘要: 根据题目的要求,我们要每输入一次就要进行一次topo_sort。这样才能做到不成功时,能知道是哪步不成功,并且给出输出。还有要注意的就是如果我们可以提前判断结果了,但后面还有输入没完成,那么我们必须继续完成输入,不然剩下的输入会影响下一次case的输入。 这是我的第一道topo_sort的题目。发现naive topo_sort的算法不好理解啊,看了好多代码都没弄懂。。。最后看了joy_的这篇文章,才彻底的弄懂了。我都是参考他的代码来写的。再次谢谢他。加油加油,多做几题就会更熟练了。#include <iostream>#include <fstream>using n 阅读全文
posted @ 2012-04-28 00:24 Jason Damon 阅读(751) 评论(0) 推荐(0) 编辑
摘要: 先把题目给的数据转换为一个完全图(边数位n(n-1)/2)。然后求最小生成树就OK啦~ 哎。把改用find_set的地方我用了father,浪费了我起码半个小时的时间去调试。。。呜呜。。。不过也没事,这次算彻底把并查集给学会了!!!绝对不能再忘了。 这题是用并查集做的,并查集简单,kruskal的naive方法懒得去看。。待日后有空再看看吧。有这个并查集用起来绝对还不错吧。就是效率没那么高而已。#include <iostream>#include <fstream>#include <string>#include <algorithm>usi 阅读全文
posted @ 2012-04-26 21:54 Jason Damon 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 这题也是求正权回路的,但和之前那题用Bellman-ford的不一样,因为这个是不知道源点的。所以用Floyd可以求出所有节点的最短路径,然后判断a[i][i]是否大于1即可。反之,如果知道了确定的源节点,那么我们用Bellman-ford的话会更方便。具体他们的区别,请看这里。//Floyd#include <iostream>#include <fstream>#include <map>#include <string>using namespace std;#define LEN 35#define INF 10000double a[L 阅读全文
posted @ 2012-04-24 21:16 Jason Damon 阅读(378) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 26 下一页