搜索
文章平均质量分 75
Lei2015_
这个作者很懒,什么都没留下…
展开
-
POJ 2488 简单 DFS
经典的骑士游历问题。有趣的是要输出字典序最小的一组解更有趣的是通过我题,我发现这种游历问题,一旦一个点可以遍历全部,那么所有点可以遍历全部,只要他有两种及以上的走的方式。#include #include #include #include using namespace std;#define MAX 1000009 #define INF 0x3f3f3f3f#原创 2014-02-25 11:55:11 · 467 阅读 · 0 评论 -
POJ 1691 记忆化搜索解集合dp
首先处理出来每个方块的依赖关系。每个方块上面颜色如果和他不同的话,就从上面方块往下面指一条边。注意,他给的坐标是点,不是方块。。。总共有15个方块 s 是一个二进制数,i 位为1代表 方块 i 被涂上颜色。每次选择度数为 0 的方块涂色。然后跟新状态继续 dfs 。#include #include #include #include #include #include原创 2014-03-23 23:35:12 · 529 阅读 · 0 评论 -
POJ 3373 记忆化搜索 难在转移上的 dp...
这题我做了一个下午加半个晚上,做题的过程中实在是百感交集。。。甚至。。涌现了各种伤感。。。网上的题解都说的什么啊!!完全不知道在搞什么,代码一打一大串。。各种搞。。我觉得代码写的不优美,八成是没有把握题目的精髓。。。wata的代码就写的超级漂亮。。。这题是个dp,但是是有规定转移方向的 dp, 所有用搜索来做最方便体现题目中规定的方向。第一优先的,最少改变次数,那我就先试试不变原创 2014-03-23 21:05:22 · 544 阅读 · 0 评论 -
POJ 3170 BFS 水题
第一次把寻找从开始点到每个草莓的最短路第二次寻找每个草莓到守护者的最短路两次 BFS 就是了,注意第一次不能通过 3#include #include #include #include #include #include #include #include #include #include #include #include #include using原创 2014-03-19 00:05:31 · 831 阅读 · 0 评论 -
POJ 3669 BFS
给你流星坠落的时间和地点,每次流星会破坏降落点和周围4个相邻的各自,在流星砸下来之前要跑到安全的地方。BFS即可,如果一个点在BFS到的时候已经被破坏就直接 continue,输出最小值。#include #include #include #include #include #include #include #include #include #include #i原创 2014-03-18 15:41:45 · 402 阅读 · 0 评论 -
POJ 1724 记忆话搜索dp
计算一个有向图从 1 到 N 在满足费用不超过K的前提下最短路是多少。。。就是dp 状态是 dp[i][j] i 是现在是第 i 个点 j 是这个点费用为 j ,里面包含的是最短路程。一个简单的剪枝是存下当前能到 n 点的最短路程,在搜索的过程中路程已经超过了这个路程就不用继续搜索了。#include #include #include #include #include #原创 2014-03-28 16:09:50 · 482 阅读 · 0 评论 -
POJ 1077 八数码问题 练习搜索
简单bfs+康托展开判重,足以过掉。一会再写 双向 bfs 还有 A* 和 IDA *#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define REA原创 2014-03-12 22:29:18 · 600 阅读 · 0 评论 -
POJ 2243 A* 算法
A* 算法学习资料(高端 BFS。。)http://www.cppblog.com/mythit/archive/2009/04/19/80492.aspx对于这篇文章中提到的打开列表和关闭列表,对应的就是 BFS 中 queue 里面的节点 和 已经用过的节点对于 BFS ,queue里面的节点是不需要更新的,但是对于 A* queue里面的节点是需要更新的。直接用一个used,原创 2014-03-12 23:55:59 · 633 阅读 · 0 评论 -
POJ 2676 解数独
这个嘛。。以前上课的时候写过一个解数独的程序,这个题顺顺利利的就过了。我觉得我已经很暴力了。。。可是速度还是挺快的。思路还是枚举每个为0的点,计算这个点可能的数字数量,从最小的一个开始枚举着填。#include #include #include #include #include #include #include #include #include #in原创 2014-03-06 20:48:09 · 622 阅读 · 0 评论 -
POJ 1416 DFS 加简单剪枝
剪枝的条件很明确,如果现在的 前面已经断开的纸带的和与当前纸带的和大于目标值,就不用向下搜索了。注意一个细节是,第一个只能加到当前纸带上其实这种题还是一个表示状态的问题dfs(sum,cur,p)表示前面的和 当前纸带的和 当前走到了第几个这样足够清晰的描述问题了#include #include #include #include #include原创 2014-03-05 17:31:00 · 516 阅读 · 0 评论 -
POJ 2531 DFS + 递推
我始终觉得,递推是计算机算法的精髓。由一种状态到另一种状态,简单的转换便可以减少很多很多的计算,比如dp。这道题是个简单的 dfs ,我们还是枚举每一种状态,但是直接 从 0 枚举到1111111111111的话。。状态和状态之间看不出有什么关系,只能暴力计算,这样的结果就是T。我们可以这样,从一个状态中,我们把一个元素从 A 中移动到 B中,在我们知道A状态计算结果的情况下,可以只枚原创 2014-03-05 16:26:24 · 498 阅读 · 0 评论 -
POJ 2251 BFS 简单
三维空间的 BFS ,同理搞之。。#include #include #include #include #include using namespace std;#define MAX 1000009 #define INF 0x3f3f3f3f#define MS(x) memset(x,0,sizeof(x))#define ll long long//#define原创 2014-02-25 19:29:18 · 500 阅读 · 0 评论 -
POJ 3278 简单 BFS
这道题 挺有意思每次有 3 中移动方式,可以前可以后。问最少移动几次可以抓住牛。不管是棋盘上怎么移动,这都是个最短路的问题。而每次的权又都是1 ,完全可以用 BFS 来解决。我觉得 BFS 中的 used 数组可以用 dist 来代替。#include #include #include #include #include using namespace std;原创 2014-02-25 20:13:12 · 540 阅读 · 0 评论 -
POJ 1321 经典棋盘问题 的搜索和状态压缩解法
这就是 n 皇后问题,不过简单了点,对于对角线不做限制搜索,因为只有 8!个状态,直接数就可以了状态压缩dp,每一行用一排1010代表上面有没有放过旗子,1是放过,0是没有,这一个行的状态可以是完全来自以前或者在这一行合法的地方放一个棋子。每行有 2^n 种状态,共 n 行,每次转移要 n,总的就是 2^n*n*n;两种代码 #include #include #inclu原创 2014-02-25 18:45:17 · 752 阅读 · 0 评论 -
Codeforces Test Round 10 C 水搜索
只用含有 1 的式子构成数字121 = 111 + 11原创 2014-06-04 11:07:25 · 535 阅读 · 0 评论