搜索
使用搜索算法解决的题目
luSpet
go、python后端开发
展开
-
HDU 3085 Nightmare Ⅱ(双向BFS)
题意 A、B在迷宫中,A每回合能走3步,B每回合能走1步,迷宫中还有2个鬼,每回合最先活动,会向两步内的格子分裂,A、B不能碰鬼,求他们最快见面的回合数 思路 题目中描述A能走3步,实际上意思是A每回合能移动[0,3]步,B也同理,所以只要考虑A、B尽可能最远到达的区域,在当前回合这些区域内都是可达的 将整个题目可以考虑为一个像染色的模型,A、B、鬼分别以每回合3、1、2的速度染色,...原创 2020-03-08 17:26:56 · 289 阅读 · 0 评论 -
HDU 1560 DNA Secence(IDA*)
题意 输入一些只包含A、C、G、T的字符串,找出一条最短的字符串,使得输入都是该字符串的子序列(不用连续),输出找到的字符串的长度 思路 考虑类似trie树这样的结构,从根开始,所有字符串沿着一条路下来能按顺序匹配上自身所有字符,该条路就是最终要找的字符串 所以从跟开始向下搜索,没个节点处也要保存到该节点时各个字符串的状态。 一开始尝试直接用BFS,但是随着层数增多,队列内的节点也...原创 2020-03-07 22:04:15 · 260 阅读 · 0 评论 -
HDU 3533 Escape(BFS)
题意 A从棋盘(0,0)前往(m,n)每回合消耗一点能量,地图上有一些碉堡,碉堡周期性发射子弹,子弹沿直线运动,每回合在棋盘上一点,碉堡可以拦住子弹的运动,子弹互相不影响,A在移动过程中不能和碉堡子弹处于同一点,输出最短到终点时间,无法到达输出“Bad luck!” 思路 棋盘上最短路,考虑用BFS或者A*,这题BFS足够 难点在于每走一到一点,要计算在当前时刻该点有无子弹...原创 2020-02-13 18:57:09 · 299 阅读 · 0 评论 -
HDU 2181 哈密顿绕行世界问题(DFS)
题意 由20个顶点的图,输入每个点联通的点,输入出发点后,按字典序输出所有通过所有点回到出发点的路线 思路 将每个顶点联通的点从小到大存储后DFS找出所有路线 代码 /* HDU 2181 dfs */ #include<iostream> #include<vector> #include<algorithm> #include<cstrin...原创 2020-02-09 17:05:42 · 236 阅读 · 0 评论 -
HDU 3567 Eight II(BFS打表)
题目大意 还是八数码问题,输入起始结束状态,输出最小字典序的操作顺序 思路 还是用BFS打表,为了使操作最短,处理出X在不同位置不断操作能达到的各种状态,至于为什么根据X的不同处理,除了X外,其他数字可以随意替换,如: 1 2 3 3 4 5 4 5 6 => 7 8 X 7 8 X 6 2 1 可以替换成 a b c c d e d e f ...原创 2020-02-08 19:37:56 · 260 阅读 · 1 评论 -
HDU 1043 Eight(康托展开+BFS)
题目大意 八数码问题,输入9个字符代表一个3*3的棋盘,对于能还原的输入,输出一段包含 u、d、l、r 操作的操作序列,不能还原的输入输出“unsolvable” 思路 输入有多组,所以考虑先预处理出所有情况的操作序列,再根据输入进行输出 因为要遍历所有情况,所以选择 BFS 即可,从结果出发,每操作一次,储存一次该种情况对应的操作序列 另外对于棋盘的所有情况,与全排列类似...原创 2020-02-05 15:03:27 · 185 阅读 · 0 评论 -
CodeForces 1105D Kilani and the Game (搜索bfs)
题目大意: 一个棋盘,p种颜色已经涂了一些区域,每种颜色有扩散速度 si ,每轮按顺序依次扩展,扩展区域为已有区域任意格走 si 次能到达的可涂色格子,且不能穿过其他颜色与不可涂色格,棋盘无可涂色区域游戏结束,输出各种颜色格子数。 思路: 用队列按顺序bfs即可实现依次涂色,每次涂色要走最多si步,所以再嵌套一个bfs来从已有格子向外扩展。 要确保扩展的尽可能大,应从边界向外扩展,同时每次...原创 2019-01-22 20:17:32 · 207 阅读 · 0 评论