搜索
文章平均质量分 76
LiWen_7
这个作者很懒,什么都没留下…
展开
-
hdu 1010
题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间。S为起点,D为终点。并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷。所以你必须每秒走一步,且到D点时,所用时间为T。用深搜。之前,误以为就是找到最短路,结果不是,而是要看是否能在所有可能的路中找到刚好满足条件的路程,后来,单用深搜,超时,所以,后来的剪枝非常重要!!!#includeusing names原创 2012-04-15 20:41:45 · 8535 阅读 · 7 评论 -
3478 Catch (判断是否为二分图,dfs奇偶染色)
题意:给出一个无向图,一个起点,问是否在某个时候,这个人有可能在所有点都可以出现人不能停留在原地只有当该无向图中出现由奇数个点组成的环,才可能访问每个点时即可能为奇数又可能为偶数。所以:如果我们把图中奇数时刻能够到达的点归到X集合,偶数能到点归到Y集合,那么如果图中出现相同集合的点有 边相连,那么就不满足二部图的性质,即可输出Yes,如果原图可二部图话,答案就是No了(无向图G为二部图原创 2012-07-31 21:48:19 · 2351 阅读 · 0 评论 -
hdu 1044Collect More Jewels ( bfs + dfs )
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1044题目大意:在一个迷宫中,从起点走到终点,还有几个宝物,问在给定的时间内,到达终点后所能获取的最大价值。题目思路:我们要解决几个问题:1、求入口到第一个取宝物的地方的最短距离 2、求第i个取宝物的地方到原创 2012-07-28 17:11:52 · 2575 阅读 · 0 评论 -
POJ 1190生日蛋糕(隐式BFS)
由于深度一定(m),所以使用深度优先搜索,自上而下的设定蛋糕序号,最顶层的为第1层,……,最底层的蛋糕为第m层,很明显满足题目条件的前i层的(从顶层(也就是编号为1的层)开始计数)最小面积mins[i]和体积minv[i]是在该层的半径以及高度都为i时取得,如果采用一般的神搜肯定会超时,所以这题还需要剪枝,剪枝条件有(从m层向上搜,假设前dep层的体积为sumv,面积为sums,当前所得的最小面积原创 2012-07-27 15:55:05 · 653 阅读 · 0 评论 -
hdu 1997 汉诺塔VII
解题思路: 我们知道递归求汉诺塔步数时,了解首先我们要将A上的1~(n-1)个移到B上,然后将A上的第n大的移到C上,就完成了第一步。然后我们需要将B上的n-1个盘移到C上,可知现在可以将B看做之前的A,A看做B。现在,我们需要判断给出的状态是否为正确的移动(移动步数最短的移法)中的状态。因为递归求步数时,第二步可以实现必须是n已经移动到了C上,若n仍然在A上,则此时要求的就是将A上的原创 2012-08-08 16:37:58 · 3393 阅读 · 0 评论 -
hdu 1045Fire Net (建图 、二分匹配)
题意:需要求最大的放置炮台数(每个炮台都不能在其他炮台攻击范围内)。 炮台攻击范围是:该炮台所在的行和列,但是‘X'可以阻挡炮台攻击。思路:二分匹配必须要有两个互不关联的集合,所以可以将行和列看做两个集合,但是’X'可以阻挡攻击,即若一行中有‘X'则该行可能放2个炮台。所以,我们将每行和每列相连的’ . '作为一个点(标号一致),这样按照行或列形成的图中标号的个数即为各原创 2012-08-02 13:31:39 · 2806 阅读 · 0 评论 -
poj 1753 Flip Game (枚举 / 十六进制的位数)
转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299076400提示:翻转棋,可以建模为多叉树本题难点有两个,一个就是不要以全黑(或全白)作为目标进行搜索,而是要把全黑(或全白)作为“根”,去搜索树叶,看看是否有 输入的棋盘状态。 另一个难点需要一点数学功底,就是要知道 树 的最大高度,这是“状态不存在”的判断转载 2012-07-14 11:22:52 · 867 阅读 · 0 评论 -
hdu 4190 二分答案
题目大意: 有n个城市,m个投票箱,接下来n个城市人口数,每个投票箱都不能为空,计算最后投票箱的容量必须达到多少,才能满足需要。限制: 每个城市的人必须只能将票投到自己城市分得得投票箱中。#include#include#include#define size 500010using namespace std;int n,m;int a[size];int ok(int x原创 2012-07-13 11:17:29 · 1215 阅读 · 0 评论 -
二分答案
ccsu 1493 青蛙过河Description有一条宽度为L(1≤L≤ 1,000,000)的河。河中间有N(0≤N≤20000)块石头,青蛙从河西岸经过这N个石块后,顺利跳到了河的东岸。设河中间每个石块距离西岸的距离为Di(其中Di大于0小于L)。注意:Di是距离起始河岸的距离。 小明闲着没事,想移掉河中间的M(0≤M≤N)个石块,让一些石块之间的距离增大一点,好叫青蛙没那原创 2012-07-12 16:18:54 · 2931 阅读 · 0 评论 -
树的分治 poj 1741
求树的重心结点:用标号定义树的重心,对于一个结点K,如果把K从树中删除(连同与它相连的边一起),剩下的被分成了很多块,每一块显然又是一棵树(即剩下的部份构成了一个森林)。则给结点K所标的号就是森林中结点个数最多的树所拥有的结点数。如果结点K的标号不大于其它他任何一个结点的标号,则结点K被称为是树的重心。从树种找到重心,在以每个重心分为的森林找每棵树的重心,每找到一个重心,就原创 2012-07-09 16:29:38 · 1236 阅读 · 0 评论 -
迭代加深搜索 埃及分数
在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。 对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。 如: 19/45=1/3 + 1/12 + 1/180 19/45=1/3 + 1原创 2012-03-04 11:48:45 · 2806 阅读 · 2 评论 -
hdu 2822 Dogs 优先队列
起点到终点,’X‘处不用时,’ . '用时为1,求到达终点的最小时间。因为当前状态的下一个状态不能确定,所以如果用普通广搜的话,必须将整个图遍历一遍,但是此题的n*m可能为1000*1000,必定超时。所以考虑用优先队列。即,每次探查到的点入队列时,不是直接放到队尾,放在队列中合适的位置(此元素前面的元素比它“小”,后面的元素比它“大”),这样才能保证,首先探查到终点的路径为所需“最短”路径。原创 2012-04-21 15:56:49 · 748 阅读 · 0 评论 -
poj 1376 Robot
#include#include#include #include #include#define N 55#define MAX 0x7fffffffusing namespace std;typedef struct { int x,y; int step; /原创 2012-04-15 17:41:07 · 1264 阅读 · 0 评论 -
hdu 1026 Ignatius and the Princess I 打小怪兽
题意: 输入n*m的迷宫,‘X’为墙,‘.'代表可走,n代表此处有n个怪兽(1因为要比较是否为最小用时路径,则用深搜。#include#include#include#define INF 10000;using namespace std;typedef struct { int x,y;}Point;char map[110][110];Point fa[11原创 2012-04-15 20:57:33 · 679 阅读 · 0 评论 -
hunnu 11082 The Minesweeper Game(BFS)
题目来源 : http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11082广度搜索bfs 最后输出的不为“#”的部分,实际上是指1、(点击处若为0)处于此处八个方向内且为0(相当于一个“感染区”)并且这个“感染区”的八个方向除了是0的情况,就必须被不为0且不为地雷的包围)。所以,从点击原创 2012-03-26 20:28:58 · 482 阅读 · 0 评论