题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1044
题意有点类似于红白机上玩过的吃豆子游戏,呵呵。在规定的时间内逃出迷宫,并带走丢在路上的宝石们,价值尽可能的大。
最直接的想法是以宝石为结点,DFS暴力搜索,这样首先需要求俩宝石的最短路径,用A*算法。
然后就TLE了……
然后剪枝吧,比如从A点出发,如d(AC) == d(AB) + d(BC),那么C点是已经搜索过,continue。并且用了贪心策略,按离当前点的距离远近排序待搜索的结点。
然后继续TLE……
然后反省,是不是我对自己写的A*算法太自信了,应该记录结点间的距离供以后查找。亦或是不是我的整个思路就是错的……
开始不自信了,看解题报告……
原来如此,思路没错,确实应该先纪录结点间的距离。
再次submit,然后WA……
又开始不自信了,难道把A*还是DFS写错了?正当我准备用debug必杀技——print大法时,浏览了一下代码,终于发现问题所在了——const
int INF = 1000000,这个INF是用来表示结点间不可达的情况,随手写了个100W,想想应该够大了吧,毕竟迷宫才50*50——再看题目,时间的范围正是100W……一怒之下后面加了俩0,AC了。
早知要纪录所有结点间距离,也不用A*了,BFS更快。
以下代码(因为用了A*,有点长):
分享到:
相关推荐
HDOJ题目分类HDOJ题目分类HDOJ题目分类
hdoj1001标程
ACM ICPC HDOJ1002
hdoj上的资源,代码有注释,很不错的哦
ACM ICPC HDOJ1001
hdoj1004,解题代码,答案代码,欢迎下载
ACM ICPC HDOJ1003
杭州电子科技大学hdoj1002,大整数相加问题
ACM ICPC HDOJ1008
杭州电子科大HDOJ
c语言 最短路 是hdoj上的一个最短路问题,写的很牛
一些HDOJ上的DP题目的小总结,但愿能帮到那些想专攻DP的人吧
ACM ICPC HDOJ1000
hdoj解题代码,题目为1000-1050
codj,hdoj的源码(50-60题)
HDOJ 源代码 包含几百道HDOJ题目源码
hdoj 2013 多校训练3标程+解题报告
hdoj1005 Number Sequence, 杭州电子科技大学oj题目代码
杭电OJ(1000-1099) AC 代码
HDOJ使用指南——公开版.docHDOJ使用指南——公开版.docHDOJ使用指南——公开版.doc