一道不算太难的最短路喵~容我吐槽一下,酋长的地位居然不是最高的额——那你特么的居然还算是酋长?!枚举一个地位区间 [i..i+M-1] 只要所有的交易者的地位都在该区间中,那么就不会引起冲突而这个可悲的酋长是必须在区间中的,所以若酋长的地位为 L0 那么该枚举的区间就是 [L0-i, L0+M-i]...
分类:
其他好文 时间:
2014-09-23 00:10:13
阅读次数:
245
弗洛伊德算法介绍 和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名...
分类:
编程语言 时间:
2014-09-22 15:50:12
阅读次数:
314
有一个二维数组,0表示路,-1表示墙,求其中任意两点的最短路径
我们先看,怎么求一条路径:求两点路径是一个数据结构上的典型的迷宫问题,解决办法如下:
从一点开始出发,向四个方向查找(上,右,下,左),每走一步,把走过的点的值+1,防止重复行走,并把走过的点压入堆栈(表示路径),如果遇到墙、或者已走过的点则不能前进,如果前方已经无路可走,则返回,路径退栈,这样递归调用,直到找到终点为止。...
分类:
其他好文 时间:
2014-09-21 23:52:51
阅读次数:
425
中文题,题意就不多说了,讲讲思路吧,先根据题意构图,与普通最短路不同的是这一题加了一个Rank,每个点都有一个Rank,题目要求最短路径上的点的Rank的最大差值在
M范围内,Dijkstra判断条件时加上Rank约束就行了。我没有添加汇点直接写的,另贴上别人添加汇点的写法。
我的代码:
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2014-09-21 12:46:40
阅读次数:
252
多种解法,水题。
DFS,BFS,最短路。
只要B开头能到M结尾。
我建立的最短路模型,然后SPFA。。花式AC。。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 0x7fffff...
分类:
其他好文 时间:
2014-09-20 23:24:39
阅读次数:
241
题目:给你最短路的集合,判断图最要有多少边。
分析:最短路。这道题目应该是最水的了,只要利用floyd判断成立和更新就解决了;
比赛开始了好久才去敲了这道题,导致累计时间,幸好最后以题数晋级。
说明:(2011-09-19 00:43)。
#include
#include
#include
int maps[ 105 ][ 105 ];
bool sma...
分类:
其他好文 时间:
2014-09-20 14:08:57
阅读次数:
152
Floyd算法可以求图内任意两点之间的最短路径,三重循环搞定,虽然暴力,但是属于算法当中最难的动态规划的一种,很有必要理解。花了一晚上和半个下午专门看这个,才看个一知半解,智商被碾压没办法。我一直怀疑这种办法会不会漏情况,是不是一定正确,脑子里想特殊用例,却把脑子想乱了。收藏这么几个网址,从数学证明...
分类:
其他好文 时间:
2014-09-19 17:23:05
阅读次数:
328
题目大意:一个有N个点m条边的无向图,可以将路径上k条边的权值变为0,试求此时1-n的最短路径长度。
Sol:我们考虑分层图思想,将图复制k+1份,分别是0~k层,表示此时已经经过的“免费边”条数。
层与层之间的边权值为0且为单向由上层指向下层。
这样我们以0层的1点做单源最短路径。每一层的n点的距离最小值即为答案。
只不过这样的点数为O(K*N),边数为O(K*M),比较慢。
...
分类:
其他好文 时间:
2014-09-19 15:42:55
阅读次数:
223
题目大意: 在一个有向图中,求经过所有的点的圈的最短路径。 思路: 把i点拆为i和i+n两个点,源点S(2*n+1)连向i, 容量为1,边权为0。i+n连向汇点E(2*n+2),容量为1,边权为0。对于输入的边a,b,w,建立a->b+n的边,容量为1,边权为w。 然后就是用模版...
分类:
其他好文 时间:
2014-09-18 22:05:34
阅读次数:
209
UVA 11165 - Galactic Travel
题目链接
题意:给定一些不能走的边,要求出从s到t的最短路
思路:由于点数多,直接广搜会超时,所以加上优化,已经找过的点就不在重复找了,这点可以利用并查集进行优化,然后对于每个点的每个不能走的区间,可以先排序,然后利用twopointer的性质,每次可以从上次找到的位置往后找即可
代码:
#include
#i...
分类:
其他好文 时间:
2014-09-17 16:58:55
阅读次数:
226