
dfs && bfs
文章平均质量分 74
zacky_su
I'm one of flying stones ever.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ 3985 Knight's Problem bfs + 剪枝
题意:在无限大的棋盘上给定起点和终点的坐标,然后给定n(0题解:bfs是肯定的,但是裸的bfs会T,可以想象任意一个最短步数形成的路径任意交换两个选择的向量形成的路径是不一样的,那么一定能找到在路径中离 l:(sx,sy)-> (tx,ty)直线最近的路径,所以只要找到这个路径即可,可以将所有背离起点终点和离 l 距离超过最大向量的点不入队,这样搜到原创 2012-09-26 16:39:31 · 2424 阅读 · 2 评论 -
HDU 2416 Treasure of the Chimp Island bfs 最短路
题意:给最大100*100的地图,$代表财宝,*表示不可达,. 表示走过不需要花费,1~9表示走过需要花费1~9,边界格子为* ,#(表示从此进入可以带0个 炸药)或A~Z(表示从此进入可以带1~26个炸药),现在一个人可以从边界非*处进入,最小到达$位置的最小花费是多少。题解:如果考虑枚举起点的话,最坏情况边界全部为起点,这样至少100*100*100*100的复杂度就悲原创 2012-11-01 23:54:09 · 1181 阅读 · 0 评论 -
POJ 3921 Destroying the bus stations 迭代加深搜索
题意:一个有向图有n(nn的最短路长度题解:首先想暴利搜索,每次找到1->n的最短路记录路径,然后枚举路径上的点删除,重复操作直到dis[n] > k,但是这样会TLE。 想这样的问题,在删除最短路上节点的顺序是不影响最后的结果的,所以每次需要把已经删除过(包含dfs之后还原回去的点)记录下, 下一层dfs的时候这些已经标记过的点即使在当前的最短路径原创 2012-09-14 21:23:42 · 1056 阅读 · 0 评论 -
POJ 1190 生日蛋糕 估计最小答案dfs剪枝
题意:想做一个m层(每层是一个圆柱)总体积为n*pi的蛋糕抹奶油,想使得抹的奶油的面积/pi = s最小,问最小的s是多少。题解:化简下得到sigma(ri * ri * hi)= n,s =sigma(2 * ri * hi) + h1 * h1,由于所有的数据都是不确定的没办法dp,只能暴搜了。 很普通的一个剪枝是当前的值+未得到的最小值 >= ans直接跳出,开始从上原创 2012-09-07 21:50:12 · 806 阅读 · 0 评论 -
SGU 364 Lemmings Dijkstra
题意:有n(1 问最后最多有多少小鼠能够到达目的点和最后一个小鼠的到达时间。题解:简单的Dijkstra最短路被我写的好丑,维护每个模板下方模板的编号,由于n小可以暴力。Sure原创,转载请注明出处#include #include #include #include #include #define ABS(x) ((x) >= 0 ? (x原创 2012-10-05 20:08:42 · 725 阅读 · 0 评论 -
ZOJ 3652 Maze 优先队列 模拟
题意:有n*m(1 控制的范围内,一个人从给定的源点走到终点,每回合能走l移动值(1 如果走到一个编号问k且k号怪物还没死的空地,那么移动值立刻减为0,问最少要几个回合能走到终点。题解:比赛的时候已经想到了四维记录状态[i][j][k][l]表示到达i j 位置打死怪物的状态为 k 剩余步数为 l 的最小回合数,但是更新时候的一个状态被我搞没了,原创 2012-09-30 01:32:46 · 1056 阅读 · 0 评论 -
SGU 320 The Influence of the Mafia
题意:给n*m(1=k那么称为大黑帮, 如果一个点被一个大黑帮完全包围或者在大黑帮的势力范围内,那么则该点是危险的,问有多少危险的点。题解:dfs搜到每一块黑帮,如果是大黑帮那么扩大一步,找到没被当前黑帮包围的点,将剩下的点(包括被当前黑帮包围的点)标记下来,最后统计之。Sure原创,转载请注明出处。#include #include #includ原创 2012-09-30 22:14:05 · 667 阅读 · 0 评论 -
POJ 1240 Pre-Post-erous! 由前序后续遍历顺序推m-叉树的个数
题意:给定m-叉树(1题解:中序+前序 -> 唯一的后序,中序 + 后序 -> 唯一的前序,但是前序 + 后序 -x> 中序,因为根是不固定的,明白这个就很容易想出这个问题了。 首先dfs确定每棵子树在前序和后序中对应的范围,然后统计子树个数,通过组合数求解即可。Sure原创,转载请注明出处。#include #include #include原创 2012-09-29 09:46:59 · 2777 阅读 · 0 评论 -
POJ 1043 What's In A Name? 二分图推理
题意:有n(1 什么绰号发送的电报,问能否推出每个人对应的绰号是什么,如果推理不出来输出"???"。题解:很容易想到二分匹配,但是正常思维构图之后会发现很难搞,因为一些明明矛盾的边的关系也搞进去了,类似于建反图的方法,每次把一定不会满足条件 的边去掉,最后剩下的边是可能满足的关系对,之后枚举每一个二分图中的必须边,如果删除后匹配数减少那么当前的匹配是正确原创 2012-09-28 20:08:12 · 2193 阅读 · 0 评论 -
POJ 1011 Sticks 经典dfs + 剪枝
题意:给n(n题解:经典dfs+剪枝。总结起来三个剪枝,具体见代码。Sure原创,转载请注明出处#include #include #include #include using namespace std;const int maxn = 70;int stick[maxn];bool vis[maxn];int sum,n,cur;bool cmp(原创 2012-11-12 00:01:52 · 680 阅读 · 0 评论