随笔分类 -  ACM / 搜索 / BFS

摘要:题目链接:POJ 3126 【Prime Path】 思路 由于最多有100组样例,所以直接先初始化判断出1000-9999之间的数字是否是素数。然后再对每个题目所给的四位数进行BFS搜索,依次对每个数位进行枚举,使用0-9的每一个数字对每一个数位进行替换,注意千位上的数字不能为0。然后检验当前数字 阅读全文
posted @ 2024-07-13 16:04 薛定谔的AC 阅读(103) 评论(0) 推荐(0)
摘要:题目链接:POJ 1077【Eight】 思路 将X看作9,本题可以视为1-9的全排列所以使用康拓展开作为哈希函数。所以结构体使用pre存储前一个状态的下标,number存储当前状态在结构体数组中的下标,oper存储上一个状态到当前状态的操作,zeroSite记录当前状态下0的位置,state存储当 阅读全文
posted @ 2024-07-11 16:25 薛定谔的AC 阅读(52) 评论(0) 推荐(0)
摘要:题目链接:HDU 4460【Friend Chains】 思路 哈希使得每个人都有一个对应的数字,然后用邻接表存储,然后使用BFS搜索出最长的友人链。注意每一次搜索都需要初始化vis标记数组,在每一组测试样例完成后需要将mp哈希map和邻接表ve初始化为空,否则会影响计算。注意当出现两个联通块时需要 阅读全文
posted @ 2024-07-11 16:16 薛定谔的AC 阅读(50) 评论(0) 推荐(0)
摘要:题目链接:HDU 1240 【Asteroids!】 思路 代码 #include <iostream> #include <queue> #include <stdlib.h> #include <cstring> #define ll long long using namespace std; 阅读全文
posted @ 2024-07-10 13:33 薛定谔的AC 阅读(58) 评论(0) 推荐(0)
摘要:题目链接:POJ 3414 【Pots】 思路 对于每个A、B瓶的每个状态,使用结构体存储,同时pre存储操作前的状态的下标,方便回溯查询正确路径的操作,oper存储使用什么操作得到当前状态,operNumber存储到达当前状态需要几步。由于需要求的是最少的操作次数,所以使用BFS,依次增加操作次数 阅读全文
posted @ 2024-07-10 11:21 薛定谔的AC 阅读(29) 评论(0) 推荐(0)
摘要:题目链接:POJ 3278 【atch That Cow】 思路 将起点放入队列,然后一次取出队列中的元素,对其进行左右移动和乘2的移动,并判断移动后的位置是否合法,合法则放入队列中继续操作。每次取出队列中的元素后,通过假设剩下的步骤全部是左右移动一格来更新结果。 代码 #include <iost 阅读全文
posted @ 2024-07-09 12:14 薛定谔的AC 阅读(65) 评论(0) 推荐(0)
摘要:题目链接:HDU 1312 【Red And Black】 思路 简单搜索,输入数据时,找出起点位置,然后从七点位置开始搜素能到达的所有位置并记录,使用check()函数判断当前位置可以走吗,可以走就把当前位置放入队列中,并将当前位置修改为非黑色位置,防止重复进入。 代码 #include <bit 阅读全文
posted @ 2024-07-09 11:40 薛定谔的AC 阅读(49) 评论(0) 推荐(0)
摘要:题目链接:填涂颜色 思路 因为需要找出被所有1围住的0,但是发现直接查找会比较麻烦,会需要搜索判断四个方向都被1包围,然后还要再次搜素给这些0赋值。但是如果反向思维把不被1包围的0全部找出来剩下的就是被1包围的0了,可以使用搜索从在正方形边界上的0开始搜索,将所有能搜到的0全部标记,剩下的就是被1包 阅读全文
posted @ 2024-06-16 14:08 薛定谔的AC 阅读(74) 评论(0) 推荐(0)