A*搜寻算法,俗称A星算法,作为启发式搜索算法中的一种,这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstra算法一样,可以找到一条最短路径;也像BFS一样,进行启发式的搜索。 A*算法最为核心的部分....
分类:
其他好文 时间:
2014-07-07 11:09:01
阅读次数:
212
本题就是使用Floyd算法求所有路径的最短路径,并且需要保存路径,而且更进一步需要按照字典顺序输出结果。
还是有一定难度的。
Floyd有一种很巧妙的记录数据的方法,大多都是使用这个方法记录数据的。
不过其实本题数据不是很大,一般太大的数据也无法使用Floyd,因为效率是O(N^3)。
所以其实也可以使用一般的Floyd算法,然后增加个三维数组记录数据。下面就是这种做法,0ms过了...
分类:
其他好文 时间:
2014-07-04 07:18:33
阅读次数:
193
学习要点: 1、分支限界法与回溯法 2、分支限界法的剪枝搜索策略 3、分支限界法的算法框架: (1)队列式(FIFO)分支限界法 (2)优先队列式分支限界法 4、应用范例: (1)单源最短路径问题 (2)装置问题 (3)布线问题 (4)0-1背包问题 ...
分类:
其他好文 时间:
2014-07-03 19:32:51
阅读次数:
173
SPFA过的。
虽然很麻烦,其实就是加上一个限制条件的最短路。
题意是说给你一些点,一些边,起点与终点。
然后这些边通过的时候需要花费时间,但是也有开关限制。
问你到达重点的最短路。(无向图)
比如输入:
1 2 6 2 10 22 30
表示 1 -> 2 需要花费时间为 6。
0~1 , 1~2 , 2~3 ...
分类:
其他好文 时间:
2014-07-03 17:52:55
阅读次数:
219
FDNY to the Rescue!
Time Limit: 1000MS
Memory Limit: 10000K
Total Submissions: 2368
Accepted: 721
Description
The Fire Department of New York (FDNY) has always been p...
分类:
其他好文 时间:
2014-07-03 17:40:05
阅读次数:
349
最短路问题变形。
题意是说从各个点运送东西到 n;能剩下来最多的。(无向图)
整体变成了求到各点时 最大的 剩余率。
边权变成了过路费率p,0
存储的时候用 1-p 存 剩余率。实际剩下的货物是 goods *(1-p)
#include
#include
#include
#include
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2014-07-03 17:39:24
阅读次数:
190
最短路判断是否出现负环。
SPFA过的,以前用Bellman。那是好久之前跟着一群大神混过去的,都忘了题了。
现在更深刻的理解图了。
给n点,m条正权边,w条负权边。
正权边是无向的,负权边是单向的。
判断是否出现了负环。
用SPFA,当某个点n 次入队了之后,肯定出现了负权。
#include
#include
#include
#include
#incl...
分类:
其他好文 时间:
2014-07-03 16:19:42
阅读次数:
182
求来回最短路加起来最长的一条。
两次SPFA,然后选某个点的来回最长。(有向图)
Dijkstra+邻接矩阵 比较方便建立 反向图。
我用SPFA+2个邻接表(正图+反图),C++ 32ms。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-07-03 16:01:33
阅读次数:
173
多种方法,可以理解为最短路变形。
也可以当作最小生成树。
题意理解就很简单。
青蛙A到青蛙B之间距离中某一次跳的距离,选出最大的。
写了2个最短路的。SPFA 和 Dijkstra。
顺便熟悉一下最小生成树,也写个Kruskal 的。
SPFA:
#include
#include
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2014-07-03 13:52:06
阅读次数:
146
类似于我上一篇解题报告。POJ 2253 Frogger。
也是最短路的变形,也可以当成生成树做。
2253 是求跳的路径中 权值最小的那一条。
而这道题1797 是求路径中 权值最大的那一条。
只需要把2253 中的dis[]初始赋INF,其他赋为0。然后dis[v]
d是某一边的大小。u出发点,v是到达点。
程序基本和 2253 一样。
#include
#include...
分类:
其他好文 时间:
2014-07-03 13:31:00
阅读次数:
193