雕刻时光

just do it……nothing impossible
随笔 - 547, 文章 - 0, 评论 - 82, 阅读 - 86万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  最短路专辑

摘要:A gas station has to be built at such a location that the minimum distance between the station and any of the residential housing is as far away as possible.考试的时候这句话意思没有完全理解,悲剧鸟。。。其实就是让你找一个加油站,它到所有房子最短距离为len , 找一个加油站len的距离越大越好加油站最多10个,以这几个加油站为原点,做dijk最短路即可#includeint map[1099][1099];const int MAX=49 阅读全文

posted @ 2013-11-02 20:11 huhuuu 阅读(566) 评论(0) 推荐(0) 编辑

摘要:题意::从起点到终点的所有的最短路中,找出离终点有X个路口的城市一共有几个开始我用最短路+DFS从起点开始搜,超时了换了一种方法,从终点开始搜,AC#includeint N;const int MAX=1e9;int use[1009];int dis[1009];int map[1009][1009];bool hash[1009];int tempget[1009];int maxDis;int allPoint;int start,end,shortNum;void dijk(){ int i,j,min,rj,from; dis[start]=0; for(i=1;... 阅读全文

posted @ 2013-09-30 14:33 huhuuu 阅读(361) 评论(0) 推荐(0) 编辑

摘要:http://pat.zju.edu.cn/contests/pat-a-practise/1018在杭州各个点,有很多自助自行车的点,最大容纳点为CMAX,但比较适合的情况是CMAX/2,现在从起点到终点,在最短路的情况下,调整各个车站的自行车数量使之CMAX/2,问开始时要提供的自行车最少与最后剩余的自行车最少的路径最短路+DFS在DFS时加上一个剪枝 if(lenth>dis[first])return ;就可以通过所有点#include#define MAX 0x3ffffffint cmax,N,end,M;int node[599];int map[599][599];int 阅读全文

posted @ 2013-09-26 10:43 huhuuu 阅读(1128) 评论(0) 推荐(0) 编辑

摘要:DIJK水过View Code #include<stdio.h>#include<string.h>#include<stack>#include<iostream>using namespace std;int n,m;int map[1009][1009];int path[1009];int dis[1009];bool used[1009];const int maxint=999999999;void dijk(){ memset(path,-1,sizeof(path)); memset(used,0,sizeof(used)); 阅读全文

posted @ 2012-02-08 14:48 huhuuu 阅读(585) 评论(0) 推荐(0) 编辑

摘要:回过头来看看,与最小生成树PRIM算法太像太像……反正用dijk自己要随时注意重边的情况……View Code 阅读全文

posted @ 2011-02-18 13:49 huhuuu 阅读(721) 评论(0) 推荐(0) 编辑

摘要:差不多最短路的题目做的差不多了主要三种算法:1、FLOYD:个人比较喜欢使用,不但可以快速计算计算多源最短路,也可以判断图的连通性。时间复杂度是(顶点^3)2、DIJK:从点的角度计算单源最短路比较方便吧,可以用邻接表优化(没用过,呵呵)。时间复杂度(顶点^2(朴素),顶点*log(顶点))3、SPFA+静态邻接表+队列储存:是从边的角度计算单源最短路,比较牛逼的算法,因为时间复杂度比较小(边*k),其中K是常数,注意用前两种算法时,因为这两种算法是从顶点思考,所以要小心重边的情况(有时题目没说明但自己要小心),每次读取边取小即可,用SPFA就没关系了网上说K~2,不过实际使用时K估计接近10 阅读全文

posted @ 2011-02-16 18:12 huhuuu 阅读(2458) 评论(2) 推荐(1) 编辑

摘要:思路:可能从题意去解决问题比较棘手,换个角度,实际就是各个(顶点到根节点的最短路*该顶点的权值)的和,类似usaco2.4.4此题注意点:1、用int型会超范围,(50000*2^16)>(1<31)2、用SPFA算法是要注意无向图边的数量是题目所说边的两倍,因为这个看似简单的地方,RE了n久3、还有就是判断No Answer是只在节点到起点(也就是根节点)没有路时才成立,注意max==0时结果是0,不是No Answer!!!View Code 阅读全文

posted @ 2011-02-16 16:34 huhuuu 阅读(415) 评论(0) 推荐(0) 编辑

摘要:一般单源起点最短路顶点较多时我们会想到dijk来做,但是单源终点最短路时,要在枚举顶点,显然会超时这时,我们可以用矩阵转置思想,把出度,入度的路径倒过来,就又求了一次单源起点最短路……dijk做的View Code现在又用SPFA 0msView Code 阅读全文

posted @ 2011-02-16 10:18 huhuuu 阅读(365) 评论(0) 推荐(0) 编辑

摘要:其实用dijstra应该更快,可以把“Z”点看做起点,依次到其他点的距离求出即可,然后求最小,因为顶点时在50个左右,FLOYD又可以将其秒杀……不过要注意的是,大小写字母代表不同的地方……View Code 阅读全文

posted @ 2011-02-15 22:02 huhuuu 阅读(375) 评论(0) 推荐(0) 编辑

摘要:枚举起点n,用SPFA求最短路,然后求和,算出路径和最小点即可View Code 阅读全文

posted @ 2011-02-15 21:52 huhuuu 阅读(740) 评论(0) 推荐(0) 编辑

摘要:本来求多源最短路现在变成多源间最大障碍,同理,一看顶点才最多300,FLOYD将其秒杀,速度还不慢FLOYD真神了,既可以求多源最短路,亦可判断图的连通性,关键是代码实现简单……View Code 阅读全文

posted @ 2011-02-15 21:29 huhuuu 阅读(266) 评论(0) 推荐(0) 编辑

摘要:昂贵的聘礼http://acm.pku.edu.cn/JudgeOnline/problem?id=1062Stockbroker Grapevinehttp://acm.pku.edu.cn/JudgeOnline/problem?id=1125Invitation Cardshttp://acm.pku.edu.cn/JudgeOnline/problem?id=1511Currency Exchangehttp://acm.pku.edu.cn/JudgeOnline/problem?id=1860MPI Maelstromhttp://acm.pku.edu.cn/JudgeOnlin 阅读全文

posted @ 2011-02-15 20:46 huhuuu 阅读(196) 评论(0) 推荐(0) 编辑

摘要:http://poj.org/problem?id=3660题意就是确定奶牛的名次;先用FLOYD做出连通图,再判要是一个顶点的出度+入度==顶点点数(n)-1,就可以确定名次View Code下面是FLOYD的邻接表优化代码(转)不过我很奇怪他的效率还没我朴素FLOYD快View Code 阅读全文

posted @ 2011-02-15 20:44 huhuuu 阅读(428) 评论(0) 推荐(0) 编辑

摘要:floyd可以秒杀,虽然其时间复杂度是(n^3)但是n<=100,时间是0msView Code 阅读全文

posted @ 2011-02-15 14:36 huhuuu 阅读(245) 评论(0) 推荐(0) 编辑

摘要:http://poj.org/problem?id=2387SPFA模板换一种,n,m,就可过,其实是有重边的,用SPFA(它已包含所有边,他从边的角度思考最短路),但是用diskar做要小心(因为他是从点的角度思考,map[][]点对点要更新到最小化)View Code 阅读全文

posted @ 2011-02-15 13:44 huhuuu 阅读(296) 评论(0) 推荐(0) 编辑

摘要:主要优化通过静态链表的快速查找(用for()语句的话就会出现很多无谓的查找)用队列是为了(不在队列的可疏松点)方便存储,下次接着出队再进行可疏松检验,最终达到最短路View Code 阅读全文

posted @ 2011-02-15 08:57 huhuuu 阅读(407) 评论(0) 推荐(0) 编辑

摘要:[代码]//一开始以为只是两个牧场之间的(二分图),实际是存在多个联通图的,额//还有最重要的是不要以为所求的农场最大直径一定存在于新图建立之后,老图(没连上新边之前)也有可能存在最大直径,错了n久……View Code 阅读全文

posted @ 2011-02-15 08:47 huhuuu 阅读(344) 评论(0) 推荐(0) 编辑

摘要:[代码]http://www.rqnoj.cn/Problem_480.html这个比较适用,先把连通图保存在了g[][],在用floyd转化到直观连通图,在多个连通图存到map[][]中,特别的map[i][0]是放第i个连通图的顶点数,若定点为0,则把i放入map[i][1]View Code 阅读全文

posted @ 2011-02-14 10:14 huhuuu 阅读(609) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示