上一页 1 2 3 4 5 6 7 8 9 10 ··· 30 下一页
  2012年10月24日
摘要: 最优比率生成树。CODE:#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<cmath>usingnamespacestd;#defineeps1e-4constintINF=0x3f3f3f3f;constintMAXN=1010;doublew[MAXN][MAXN],d[MAXN];doubledis[MAXN][MAXN],cost[MAXN][MAXN];intn,m;structnode{doublex,y,z;}a[M 阅读全文
posted @ 2012-10-24 19:03 有间博客 阅读(141) 评论(0) 推荐(0) 编辑
摘要: SPFA+0/1分数规划。CODE:#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<queue>usingnamespacestd;#defineMAXN1010#defineINF0X3F3F3F3F#defineeps1e-7structEdge{intv,next;doublew;}edge[MAXN*5];doubled[MAXN],num[MAXN];intfirst[MAXN];intn,m,cnt;voidinit( 阅读全文
posted @ 2012-10-24 19:01 有间博客 阅读(175) 评论(0) 推荐(0) 编辑
  2012年10月23日
摘要: 大意:有n个城市,秦始皇要修用n-1条路把它们连起来,要求从任一点出发,都可以到达其它的任意点。秦始皇希望这所有n-1条路长度之和最短。然后徐福突然有冒出来,说是他有魔法,可以不用人力、财力就变出其中任意一条路出来。秦始皇希望徐福能把要修的n-1条路中最长的那条变出来,但是徐福希望能把要求的人力数量最多的那条变出来。对于每条路所需要的人力,A是指这条路连接的两个城市的人数之和,对,是两个城市。最终,秦始皇给出了一个公式,A/B,A是指要徐福用魔法变出的那条路所需人力, B是指除了徐福变出来的那条之外的所有n-2条路径长度之和,选使得A/B值最大的那条。思路:这道题可以看做是次小生成树的变形,我 阅读全文
posted @ 2012-10-23 21:33 有间博客 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 关于次小生成树的构造:在求最小生成树时,用数组Max[i][j]来表示MST中i到j最大边权。求完后,直接枚举所有不在MST中的边,把它加入到MST中构成一棵新的树,且该树有环,此环是由刚加入的边(i,j)造成的,所以可以通过删除Max[i][j]即可得到新的一颗树,且所有的该类树中必有一棵为次小生成树。如图所示:G,H不是MST上的边,通过加入边(G,H),得到一个环(B,H,G),由于在计算最小生成树时已经计算出G,H之间最大边权为Max[G][H] = BH,所以通过删除BH即可得到一棵此时最小的生成树,然后更新答案即可。实际上,我们知道MST的构造是具有贪心性质的,假如上图是一棵MST 阅读全文
posted @ 2012-10-23 16:27 有间博客 阅读(251) 评论(0) 推荐(0) 编辑
  2012年10月22日
摘要: 第K短路问题,可以用A*来写,我了个去,遇到了超级令人无语的错误... 如何求第K短呢?有一种简单的方法是广度优先搜索,记录t出队列的次数,当t第k次出队列时,就是第k短路了。但点数过大时,入队列的节点过多,时间和空间复杂度都较高。现在有另一种更加高效的算法A*。介绍一些关键的概念:首先,对于状态空间搜索,是可以提出一个通用的搜索算法框架的,而这个框架中则主要使用了open,和closed两个表。open表,保存了当前待扩展节点,closed表则保存已扩展节点,而BFS DFS也可以纳入这个框架,比如DFS中使用的white black gray染色,实际于 open closed便是对应的。 阅读全文
posted @ 2012-10-22 22:37 有间博客 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 字符串哈希函数。思路:采用ELFhash函数,即(它用于UNIX的“可执行链接格式,ELF”中,这里把它写成C函数),见《算法艺术与信息学奥赛》P96CODE:#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<queue>usingnamespacestd;#defineMAXN149993typedefunsignedintUL;intfirst[MAXN],cnt;structnode{chars1[11],s2[11];int 阅读全文
posted @ 2012-10-22 20:17 有间博客 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 图论路径问题 0/1边权最短路径 BFS 非负边权最短路径(Dijkstra) 可以用Dijkstra解决问题的特征 负边权最短路径 Bellman-Ford Bellman-Ford的Yen-氏优化 差分约束系统 Floyd 广义路径问题 传递闭包 极小极大距离 / 极大极小距离 Euler Path / Tour 圈套圈算法 混合图的 Euler Path / Tour Hamilton Path / Tour 特殊图的Hamilton Path / Tour 构造生成树问题 最小生成树 第k小生成树 最优比率生成树 0/1分数规划 度限制生成树连通性问题 强大的DFS算法 无向图连通性 阅读全文
posted @ 2012-10-22 08:13 有间博客 阅读(233) 评论(0) 推荐(0) 编辑
  2012年10月20日
摘要: CODE:#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>usingnamespacestd;#defineMAXN25#defineINF0x3f3f3f3fintn,times;longlongd[MAXN][MAXN];voidinit(){for(inti=1;i<=20;i++){for(intj=1;j<=20;j++){if(i==j)d[i][j]=0;elsed[i][j]=INF;}}}voidFloyd(){intu,v; 阅读全文
posted @ 2012-10-20 21:58 有间博客 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 大意:给你一个图,以及出发点与起始点,让你求这两者之间的最小的最大权值。思路:动态规划,Floyd的变形,我理解起来比较困难,关键是我接触动态规划较少。CODE:#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<cmath>usingnamespacestd;#defineMAXN110#defineINF0X3F3F3F3Fintd[MAXN+10][MAXN+10];intn,m,q;voidinit(){for(inti=1; 阅读全文
posted @ 2012-10-20 21:40 有间博客 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 大意:使用最小连线使得所有给定的点连在一起。思路:最小生成树。CODE:#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<cmath>usingnamespacestd;#defineMAXN110#defineINF0X3F3F3F3Fstructnode{doublex,y;}a[MAXN];doublew[MAXN][MAXN],d[MAXN];intn;doubledist(nodea,nodeb){returnsqrt(( 阅读全文
posted @ 2012-10-20 16:46 有间博客 阅读(409) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 30 下一页