搜索
文章平均质量分 53
搜索类习题总结
Gene_INNOCENT
Wait for the sunrise!
展开
-
【2018 SWERC - C 】Crosswords【字典树、暴力搜索】
题意给出 AAA 个长度为 NNN 的字符串,BBB 个长度为 MMM 的字符串,将长度为 NNN 的字符串竖直摆放,长度为 MMM 的字符串水平摆放,问能形成多少个 N∗MN*MN∗M 的矩阵。(2≤N,M≤4,1≤A∗B≤1008016)(2\leq N,M\leq 4,1\leq A*B\leq 1008016)(2≤N,M≤4,1≤A∗B≤1008016)如下图所示,says,area...原创 2020-03-31 00:20:22 · 411 阅读 · 0 评论 -
【GYM-100889 C】Chunin Exam【左右手路径问题】
题意:一道交互题,输入想要走的方向,系统返回是否可走,实现从 (1,1)(1,1)(1,1) 走到 (N,M)(N,M)(N,M)。询问次数不能超过 12 ∗ P + 4 ∗ (N + M)12 * P + 4 * (N + M)12 ∗ P + 4 ∗ (N + M),PPP 是栅栏总数。思路:在迷宫中如何找到一条必定可行的路径。此处涉及到了一个左右手路径的知识点,即不断左手或右手扶墙,...原创 2019-07-24 09:11:13 · 401 阅读 · 0 评论 -
POJ_3984迷宫问题(bfs基础题)
题意: 中文题干,不多说了.解题思路:先说一下dfs和bfs的区别.dfs是一条路搜到底,不能再往下了,就回溯一步,需要用到递归.而bfs是是一层层展开,比如说从第一个数0开始搜,然后把和0直接连接的数比如1,2,3都搜出来,加入队列,然后再把和1直接连接的搜出来,比如4,加入队列;然后再搜和2直接连接的,依次往下.简单的说就是一层一层的搜,每一条路径的搜...原创 2018-03-09 19:36:55 · 3326 阅读 · 9 评论 -
【Codeforces Round #516_div2】Labyrinth【迷宫搜索】
题意: 给定一个迷宫,由 ‘*’ 和 ‘.’ 组成,*表示此处有障碍。给定一个起始点,以及 l 和 r ,l 代表这个点可以向右移动的次数,r表示这个点可以向左移动的次数,求从起始点出发,可以到达多少个不同的点。思路: 这是一个典型的迷宫问题,直接用bfs即可解决,主要问题在于如果只用 vis 数组求标记每个点是否走过,如果走过就不再走,这样是会出错的。因为 ...原创 2018-10-14 23:42:49 · 264 阅读 · 0 评论 -
【Codeforces Round #533(Div. 2)】D.Kilani and the Game【多源bfs】
题意:一个 n∗mn*mn∗m 的网格,一共有 ppp 个人,每个人都有一个移动速度,并且每个人一开始都拥有若干个格子。每一轮游戏,从 111 号轮到 ppp 号,每个人轮到自己后可以从已有的格子出发去占领新的格子,新的格子距离旧的格子的距离小于等于移动速度,问最后每个人拥有的格子数。(1≤n,m≤1000,1≤p≤9)(1\leq n,m\leq 1000,1\leq p\leq 9)(1≤n...原创 2019-08-21 21:58:25 · 1266 阅读 · 0 评论 -
POJ1321-Chess Problem(dfs基础题)
题意: 中文题干,不多说了.解题思路: 基础dfs.dfs思路其实很简单,就是走到走不了了以后,就回退一步,然后重新搜索. 用bool chess[9][9]标记哪些可以走,用col[9]标记哪些列走过了,从第一行往下搜. 代码用递归的实现的,初学的时候,看代码都比较费劲,这个时候就需要自己手动模拟一遍,模拟完了以后...原创 2018-03-09 13:07:41 · 298 阅读 · 0 评论 -
【POJ 3074】Sudoku【剪枝】
题意: 一个数独问题,类似的还有POJ2676 = POJ 2918 < POJ3074 < POJ3076,按难度排序。解法: 大部分的题解都是用舞蹈链写的,但是实在不想学这个不太常用的算法,就一直尝试剪枝。成功剪了n小时......两个剪枝操作: 1.每次寻找可以填的数字最少的那个格子 2.每次更新的时候,顺便寻找...原创 2018-08-14 16:52:46 · 348 阅读 · 0 评论 -
【16年浙江省赛H ZOJ 3965】Binary Tree Restoring 【两个dfs序还原】
题意: 给出两个dfs序列,求出一个二叉树,使得该二叉树满足这两个dfs序列。思路: 看到这个题,比较容易想到的就是给出二叉树前、中序遍历,求二叉树的后序遍历。因此本题的思路就是对于序列中的每一段递归判断。dfs过程中给出当前两个序列的父亲节点,然后在序列的对应位置进行判断,如果两个节点相同,则这两个节点都属于当前dfs中的父亲节点。 如果...原创 2019-02-27 11:24:46 · 307 阅读 · 0 评论