随笔分类 - ACM / 搜索
摘要:题目链接:POJ 3126 【Prime Path】 思路 由于最多有100组样例,所以直接先初始化判断出1000-9999之间的数字是否是素数。然后再对每个题目所给的四位数进行BFS搜索,依次对每个数位进行枚举,使用0-9的每一个数字对每一个数位进行替换,注意千位上的数字不能为0。然后检验当前数字
阅读全文
摘要:题目链接:POJ 1077【Eight】 思路 将X看作9,本题可以视为1-9的全排列所以使用康拓展开作为哈希函数。所以结构体使用pre存储前一个状态的下标,number存储当前状态在结构体数组中的下标,oper存储上一个状态到当前状态的操作,zeroSite记录当前状态下0的位置,state存储当
阅读全文
摘要:题目链接:HDU 4460【Friend Chains】 思路 哈希使得每个人都有一个对应的数字,然后用邻接表存储,然后使用BFS搜索出最长的友人链。注意每一次搜索都需要初始化vis标记数组,在每一组测试样例完成后需要将mp哈希map和邻接表ve初始化为空,否则会影响计算。注意当出现两个联通块时需要
阅读全文
摘要:题目链接:HDU 1240 【Asteroids!】 思路 代码 #include <iostream> #include <queue> #include <stdlib.h> #include <cstring> #define ll long long using namespace std;
阅读全文
摘要:题目链接:POJ 3414 【Pots】 思路 对于每个A、B瓶的每个状态,使用结构体存储,同时pre存储操作前的状态的下标,方便回溯查询正确路径的操作,oper存储使用什么操作得到当前状态,operNumber存储到达当前状态需要几步。由于需要求的是最少的操作次数,所以使用BFS,依次增加操作次数
阅读全文
摘要:题目链接:POJ 1426 【Find The Multiple】 思路 输入数据,直到0时停止计算,并在循环输入内,每次计算前初始化所有需要用到的变量或者数组,避免影响计算结果。 从1开始依次枚举每一位是0还是1。同时使用取模的计算公式对数字进行优化防止数据溢出,(a + b) % mod = (
阅读全文
摘要:题目链接:POJ 3278 【atch That Cow】 思路 将起点放入队列,然后一次取出队列中的元素,对其进行左右移动和乘2的移动,并判断移动后的位置是否合法,合法则放入队列中继续操作。每次取出队列中的元素后,通过假设剩下的步骤全部是左右移动一格来更新结果。 代码 #include <iost
阅读全文
摘要:题目链接:HDU 1312 【Red And Black】 思路 简单搜索,输入数据时,找出起点位置,然后从七点位置开始搜素能到达的所有位置并记录,使用check()函数判断当前位置可以走吗,可以走就把当前位置放入队列中,并将当前位置修改为非黑色位置,防止重复进入。 代码 #include <bit
阅读全文
摘要:题目链接:油滴扩展 思路 枚举油滴滴下的顺序,然后依次判断每个油滴扩展的半径。然后每次计算出当前油滴能扩散的最大半径,通过使用当前油滴与边长的距离。 代码 #include <bits/stdc++.h> using namespace std; const int maxn = 10; const
阅读全文
摘要:题目链接:填涂颜色 思路 因为需要找出被所有1围住的0,但是发现直接查找会比较麻烦,会需要搜索判断四个方向都被1包围,然后还要再次搜素给这些0赋值。但是如果反向思维把不被1包围的0全部找出来剩下的就是被1包围的0了,可以使用搜索从在正方形边界上的0开始搜索,将所有能搜到的0全部标记,剩下的就是被1包
阅读全文
摘要:题目链接:二叉苹果树 思路 本题使用链式向前星存储树上的边,然后DFS搜索+简单dp。 dp数组,dp[i][j]表示节点i及其子树保留k根树枝得到的最大苹果数。son数组存储当前节点的孩子节点的编号和当前节点与孩子节点之间的树枝上的苹果个数。 对于dp递推公式,我们可以对每一个节点逐个分析,对于每
阅读全文
摘要:题目链接:没有上司的舞会 思路 这是一道树形dp的入门题,也可以用DFS+记忆化搜索来理解,要注意的地方是,输入关系时先输入的l为后输入的k的下属,所以存储边时需要注意。 在面对图论或者树的存储时通常可以使用链式向前星(如下代码中的add函数)或者STL中的vector存储边。 链式向前星和vect
阅读全文
摘要:题目链接:八皇后 思路 这是一个典型的搜索题目,从前往后依次枚举行数,从第一行开始依次枚举皇后的纵坐标,并判断当前坐标是否满足题目要求,满足题目要求则标记将答案存储,并继续向下枚举下一行。 由分析可得每条对角线上的任意一点的横纵坐标满足公式i - j + n的值与对角线上其他点的公式值相等,n为棋盘
阅读全文

浙公网安备 33010602011771号