搜索 BFS
_pkm_
love coding
展开
-
POJ 2449 Remmarguts' Date (A* 第k短路)
题目链接给出n个点,m条边的有向图,问s到t的第k短路长度。使用A*进行计算,每次不判重,把每一个点的相邻的所有状态加入到扩展集合中,判断t出队的次数为k就是k短路。 这里的 A *的H函数我们用单源最短路径计算从t到每个点的最短距离,因为是有向图计算的时候把图反向一下。注意:当s==t的时候,k需要加以1。//#include<bits/stdc++.h>#include<iostream>#原创 2016-08-31 09:51:59 · 284 阅读 · 0 评论 -
HDU 1043 Eight poj 1077 (八数码 启发式搜索)
题目链接 poj1077 hdu1043使用A*搜索就可以了 A*是bfs的一种优化,使用函数F做为每个节点的访问的优先级hdu的需要先判断是否有解,否则会tle,加上后跑了1000+ms poj的不用判断,也可以ac,跑了40+ms一个状态表示成一维的形式,求出除0之外所有数字的逆序数之和,也就是每个数字前面比它大的数字的个数的和,称为这个状态的逆序。 若两个状态的逆序奇偶性 相同,则可原创 2016-08-30 13:11:02 · 457 阅读 · 0 评论 -
HIHO #1308 : 搜索二·骑士问题
题目链接可以直接跑三次bfs,也可以使用18位的二进制表示3个人的状态,一次bfs,因为坐标在0-7,所以一个数字只用3位就够了,然后6个数字,一共18位就够了#include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define fastIO ios::sync_with_stdio(fa原创 2016-08-29 09:03:55 · 424 阅读 · 0 评论