
搜索
Masker_43
这个作者很懒,什么都没留下…
展开
-
POJ 3239【Solution to the n Queens Puzzle】
题目链接 思路: 第一次做m皇后问题,用了深搜,TLE。注意这里的深搜可以逐列搜索,而深度也无需记录,因为可以用列数充当深度。dfs() 只有列数一个参数。并且这里的 flip() 比较特殊,我使用的方法是记录一个三维的标记数组,第一维代表已经填充的皇后造成的标记,所以每次翻转要用 memcpy(rem[y] , rem[y-1] , sizeof(rem[y-1])); 以便回溯时消除标...原创 2019-04-29 13:59:07 · 161 阅读 · 0 评论 -
【J - Borg Maze】
思路: 最小生成树+BFS 自己想出来哒,但是数据好坑,输入长宽后有一大堆空格,WA 的好难受。 题目很麻烦,依次需要读图,存图,BFS 枚举每两个点之间的最短路径,Prim 求以 S 为根的最小生成树。还用到了两种结构体两个优先队列,分别用于 BFS 和 Prim。 可以使用 map 优化查找。我没有写。 代码: 63ms 792kB //63ms 792kB #include...原创 2019-07-07 18:37:18 · 201 阅读 · 0 评论 -
【N - Find a way】
思路: 正解:2次BFS。 我的思路: 第一次我从每个K开始,找每个K的到达两个人的时间,TLE。 把 char mp[][] 换成 bool mp[][],TLE。 正解:从每个人开始BFS,注意KFC的存储。 代码: 第一版:TLE #include <iostream> #include <cstring> #include <queue> ...原创 2019-05-18 10:03:19 · 135 阅读 · 0 评论 -
【M - 非常可乐】
思路: 6入口 BFS,但是我的思路偏了: 一开始我以为是3个瓶子只要有一个达到 1/2总水量 就可以了(前两张代码),后来发现样例 4 1 3 的答案是 3 不是 2,就以为是只能用杯子喝水,可以喝很多次(后一张代码),但是这样会出现一个比较难解决的问题就是最后一个人喝完,另一个人还需要倒几次水有些难写,终于放弃了。 第一张代码 map 的操作出了问题。 去搜题解,原来题意是: 使用...原创 2019-05-17 21:09:59 · 157 阅读 · 0 评论 -
【E - Find The Multiple】
mars167的BLOG原创 2019-05-13 14:31:39 · 114 阅读 · 0 评论 -
【L - Oil Deposits】
思路: BFS,记录联通块(实际就是记录经过几次BFS)。 代码: 46ms 1428kB //46ms 1428kB #include <iostream> #include <cstring> #include <queue> using namespace std; const int maxn = 105; const int mo...原创 2019-05-17 09:45:20 · 93 阅读 · 0 评论 -
【K - 迷宫问题】
思路: BFS,记录路径。 简化版的【H - Pots】。 总结: 队列存状态,栈反序输出,结构体类型。 结构体中的前驱是数组编号。 边界停止搜索,标记不要忘记。 代码: 0ms 676kB //0ms 676kB #include <iostream> #include <queue> #include <stack> using nam...原创 2019-05-16 18:03:23 · 80 阅读 · 0 评论 -
【C - Catch That Cow 】
思路: 以后再见就会了~ 广搜的小变体:因为:每次有三种移动方式,用过的点不会再用。 代码: 47ms 1164kB //47ms 1164kB #include <iostream> #include <cstring> #include <queue> //严防数组越界造成RE //vis只在判断是否加入新点时使用,check 中不用 /...原创 2019-05-12 12:56:21 · 83 阅读 · 0 评论 -
【J - Fire!】
思路: 自己想出来豆 BFS 使用两个列表分别记录火的状态和人的状态,先火再人,并且使用火的新状态来对人剪枝。 代码: 210ms //210ms #include <iostream> #include <cstring> #include <queue> using namespace std; const int maxn = 1005;...原创 2019-05-16 17:16:30 · 276 阅读 · 0 评论 -
【B - Dungeon Master 】
思路: 正常bfs。 优先队列,moveto,vis,不递归,不传参。 构造函数。 出现死循环一般是 vis 没置 true。 代码: 47ms 788kB //47ms 788kB #include <iostream> #include <queue> #include <cstring> using namespace std; con...原创 2019-05-12 11:07:19 · 232 阅读 · 0 评论 -
【A - 棋盘问题】
由于本专题名声在外,且是在 VJ 平台上,一般大家都会找 cloned 比赛做,就不放链接了,在此一并解释。 思路: 第一版代码是写的比较熟的 dfs,但是一直 TLE。 第二版是借鉴syyyyyw的BLOG。方法很简便,略作讲解: 因为要求棋子不可以在同一行同一列,所以其实【每翻一个格子一并确定哪些格子不能翻,搜索后再翻回来】的操作就很难实现(因为有重叠的格子)(可以通过拷贝实现,详参见...原创 2019-05-12 09:41:56 · 314 阅读 · 0 评论 -
【I - Fire Game】
思路: 想到了枚举,没敢写,不自信。 代码: 枚举 + bfs:156ms 228kB //156ms 228kB #include <iostream> #include <vector> #include <queue> #include <cstring> #define INF 0x3f3f3f3f using names...原创 2019-05-15 20:54:42 · 195 阅读 · 0 评论 -
【H - Pots】
思路: 源自:田益铭的BLOG 这道题做的很崩,勉强做出来居然过掉了。不过以后就会写简单的路径存储了。 BFS,6入口,记录路径。 突然发现BFS也不需要优先队列啊…普通队列就行了呀。 第一次做记录路径的搜索,总结如下: 结构体要保存:状态(x,y),深度(step),前驱(pre)。 需要一个数组存储 pot,什么时候用呢,就是当丢掉一个 pot 时紧接着存起来就可以了。 发现带有构造函数的...原创 2019-05-15 19:39:53 · 271 阅读 · 0 评论 -
【F - Prime Path】
思路: wow 第一次独立解出一道略微变形的搜索题。 dfs:素数筛预处理,对每个数位搜索就可以了。 注意:用 pow() 一定要用 (int) 进行类型转换,无论是除法还是取余。因为 pow() 返回值是 double() 类型。 代码: 63ms 720kB //63ms 720kB #include <iostream> #include <cstring&...原创 2019-05-14 14:10:48 · 104 阅读 · 0 评论 -
POJ 2965【The Pilots Brothers' refrigerator】
题目链接 思路: 因为刚做完Flip Game嘛,很快就敲出了第一版代码~ 可是TLE了,又没有别的办法,只能尝试把判断符号 ‘+’‘-’ 改成判断 bool 这样子… 然后WA…先贴出WA部分,你可以试着想想为什么。 //这里是dfs()中的第一部分:停搜条件 if(flag) return ; if(row == 5) return ; if(deep == ...原创 2019-04-25 15:52:57 · 112 阅读 · 0 评论 -
POJ 1753【Flip Game】
题目链接 思路: 其实自己并没有思路 Anyway,第一时间想到的肯定是dfs: 首先,翻一个棋子可以想成掐住这一格,翻一个板子。那么同一个板子翻两次是没有意义的。这点很容易想通。 明白了上面这条,就明白了每一局棋最多翻16次。 然后呢,就是写dfs(),而一般这种题的 dfs() 都不是那么好写的,这里略作点评。 dfs: 首先确定使用什么变量:当前在哪一格,要记录坐标row、col;求步数...原创 2019-04-24 22:48:22 · 167 阅读 · 0 评论 -
【P - FatMouse and Cheese】
思路: 记忆化搜索,注意本代码成立的前提是“He eats up the cheese where he stands and then runs either horizontally or vertically to another location.” 即每次行动时只能选定一个方向猛冲。 代码: 140ms 1492kB //140ms 1492kB #include &l...原创 2019-07-23 20:45:06 · 163 阅读 · 0 评论