A*
CaprYang
这个作者很懒,什么都没留下…
展开
-
Two Paths HDU - 6181 A* K短路
题解 题目大意,给定一个无向图,求1到n的次短路,保证1到n有路径,起点终点相同时需要再次回到起点。 使用dijkstra以终点为初始点跑出其它所有节点到终点的最短路径作为A*的h函数值。 以起点为起始点使用A*算法,当第二次到达终点时则为次短路。 AC代码 #include <stdio.h> #include <bits/stdc++.h> #define fst fi...原创 2019-02-27 18:51:24 · 554 阅读 · 0 评论 -
ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven A* K短路
题解 题目大意,给一个有向图,问起点到终点的k短路代价是否小于t。 使用A算法求解,由于是有向图使用dijkstra得到其它所有点到终点的最短路时需要建立反向边。 给定的有向图不一定能从起点到达终点,**在使用A之前先判断是否可达,否则会造成死循环。** AC代码 #include &lt;stdio.h&gt; #include &lt;bits/stdc++.h&gt; #define fst...原创 2019-02-27 19:09:01 · 220 阅读 · 0 评论 -
Eight HDU - 1043 搜索 A* | 双向BFS
题解 题目很明显使用搜索算法,普通BFS会导致超时,使用A*算法进行搜索。 计算当前状态的每个数字直接移动到他应该在的位置需要的次数求和,作为A*算法的h函数值。 画了几次找规律发现怎么移动逆序对都为偶数,所以特判当逆序对为奇数时不可行。 在搜索过程中,已经搜索到的状态不再进行搜索,需要使用数组进行标记,由于0~8的全排列直接用2进制或10进制表示过大。 使用康拓展卡进行状态压缩,将0~8的全排列...原创 2019-02-27 19:21:47 · 537 阅读 · 0 评论