搜索
文章平均质量分 86
luckyone2014
想思路是苦涩艰辛的,但是打代码是愉快的。
展开
-
hdu 1242 Rescue bfs+优先队列priority
题意: 求r到a最短距离,遇到守卫x ,要多花一秒.因为有守卫,所以普通队列得到的不一定是最优解,普通队列中最前面的只是步数最小,不是时间最少.所以要用优先队列,让时间花费最小的排在前面.注意: 因为没有考虑到可能没有r,也就是没人来救的情况,结果我一直RE. 衰.原创 2015-02-06 21:58:57 · 509 阅读 · 0 评论 -
hdu 5355 Cake dfs暴搜 构造
题意:把有n块蛋糕, 大小分别是1-n。 分给m个人, 个数随便,大小和要全相等。做法:其实那两个不合法的情况,做比赛时队友已经发现了。后来按照 最大的 和某一个小的数 凑对,贪心来做。 比赛时Ac了。赛后数据加强 ,这种方法在数据23 6时会有bug。然后根据题解,在数字大于m*4 的时候 从大到小, 蛇形分配。原创 2015-08-07 19:41:05 · 766 阅读 · 3 评论 -
zoj 3890 Wumpus bfs
题意:有一个n*n的迷宫,然后输入 金矿 怪兽 陷阱的位置。做法:他可以前进,转向,挖矿,爬出出口,每一步耗费10分,挖到金矿加1000分。以坐标,方向,有没有挖过金矿,开四位记录vis 状态。然后打一遍 bfs就行了。注意怪兽可能在起始点要特判,还有就是可能他没有金矿可以去挖,就输出-1而不是-10。原创 2015-07-27 21:38:49 · 998 阅读 · 0 评论 -
hdu 5094 Maze bfs+状态压缩
题意:n*m大的迷宫 ,有p种钥匙。钥匙最多有10种,所以可以用状压表示门需要钥匙的状态, 还有已经拥有哪几把钥匙的状态。 然后下来一个k,然后k行表示 (x1,y1),(x2,y2)直接有门或者墙。 如果g==0 ,就是有墙, 如果g>0 表示有门,且门需要第g把钥匙才能开。 然后下来一个s,然后s行,表示(x,y)这个点有 第g把钥匙。 问从(1,1)到(n,m)最少几步。做法:状压, 每个点有四个方向,记录能否通过的状态, 门的话 标记为-1, 0,表示不用钥匙,>0 的话,哪位上是1,原创 2015-05-05 22:17:41 · 737 阅读 · 0 评论 -
CF #301 504C C. Ice Cave BFS
题意:X是坑,'.'是冰层,冰层走过一次后变成坑。问能不能从 sx,sy开始走, 在ex,ey处掉入坑中。做法:bfs一下,X处如果不是终点,那肯定是不能走的。 如果是终点,且是X,就直接返回可以。 如果是‘.’那都可以走。走完之后把这个格子变成‘X’。复杂度为地图大小*2。原创 2015-05-01 11:47:14 · 1504 阅读 · 3 评论 -
hdu 4499 Cannon 暴力dfs搜索
题意:给你一个n*m的棋盘,有q个点已经放了棋。问最多还能放多少炮。要求炮与炮之间不能互相攻击。也就是两个炮直接不能隔着炮或者隔着棋。做法:棋盘大小最大25个格子。2^25=3*10^7。如果枚举每个状态还要判断可不可行会超时。 所以我用了dfs。每次那个位置如果没有棋,就摆上炮dfs下去,每次摆判断和正上方一排冲突不冲突,还有左边一排冲不冲突。不冲突才可以摆。 再把炮去掉dfs下去。如果没有棋,就dfs不摆炮就行了。原创 2015-05-09 21:45:43 · 951 阅读 · 0 评论 -
zoj 3478 Binary Land bfs
题意:给你地图‘X’是墙,‘.’是路,和两只公母企鹅的坐标,开始两只企鹅不会在墙里。他们如果没被困,或者没走到地图边缘,或者没被墙挡住,那么都是同时走的,上下同相走,左右反向走。求同时走到H点的最小时间。同时走耗时5s。图里有蜘蛛网‘O’,如果有一只被困,那么另一只可能是笨企鹅,也可能是聪明的企鹅,聪明的走一步耗时2s,笨的3s。如果一只企鹅走到另一只企鹅的旁边,可以把另一只救出来,让他到自己的位置。耗时11s。两只企鹅如果都被困,就失败了。做法:bfs,因为不知道哪只是笨的,所以要bfs两次。打原创 2015-04-07 20:22:43 · 846 阅读 · 0 评论 -
URAL 1298 knight dfs搜索
题意:有一个n*n的棋盘。从任意一个位置开始走。走法和象棋中的马一样。要求走过的点不能再走。输出可以走完所有点的走法。否者输出IMPOSSIBLE。做法:用dfs搜索所有的点。。。 不知道为什么dir的方向如果不一样,得到的 时间 差的很远。我用的两种dir 一个只用609ms,一个用了1900ms的时间。原创 2015-03-07 20:37:39 · 931 阅读 · 0 评论 -
hdu 1429 胜利大逃亡(续) bfs+状态压缩
Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)……这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些地方。刚开始Ignatius被关在(sx,sy)的位置,离开地牢的门在(ex,ey)的位置。做法:因为钥匙最多有10把,2^10 =1024,所以可以把10把钥匙有没有的情况记录在 一个数中。 num的第三维就是 钥匙 拥有的状态。然后就和普通的bfs一样了。原创 2015-03-05 20:55:55 · 760 阅读 · 0 评论 -
ural 1145 Rope in the Labyrinth 图中 bfs求树的直径
首先我们要知道怎么求树的直径。树的直径是指树的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为树的直径;题意:给了个图,' . ' 可以走 ‘ # ’ 是墙。因为题目中规定了两点之间最多只有一条路可以走,而且必有一条路。可以见‘ . ’ 是一个树的结构。要求得距离最长的两点的距离。也就是求树的直径了。做法: 找到节点,节点就是三面有‘ # ‘ 的 点。然后bfs 两遍求出直径就可以了。 注意:图很大,dfs 会超内存。原创 2015-02-12 11:11:28 · 929 阅读 · 0 评论 -
hdu 1226 超级密码 bfs+取余判重
bfs+同余判重,复杂度为0(n)我们都知道 (n+m)%mod =(n%mod+m%mod)%mod对于这题 也可以类似得得到以下的结论假如一个2位数 从高位到低位 依次是 ab, ;那么 这个对这个数取模 , 相当于 (a*10+b)%mod 相当于 ((a%mod)*10+b)%mod,,这里的mod 就是n,10就是进制c.原创 2015-02-06 19:14:47 · 840 阅读 · 0 评论 -
hdu 5323 Solve this interesting problem dfs 搜索
题意:告诉你一个线段树有 一个区间 l到r,如果有这个种线段树 问根节点 0-n, n最小是多少。如果没有输出-1做法:搜索剪枝,主要那个剪枝右边界比较难想 比较重要。原创 2015-07-29 15:24:36 · 726 阅读 · 0 评论