![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
搜索
文章平均质量分 76
力铭君
因为无知与恐惧所以人类才渴望上帝,但这同时也是一切善的源头
展开
-
Poj 3279 Fliptile
题目的意思大概是这样的:给你一个n*m的图,把图中所有的1变成0,每次你可以选择一个“十”字型范围进行反转(0变1 ,1变0),如1 1 11 1 11 1 1在中间位置翻转一次会变成1 0 10 0 01 0 1问你最少需要多少次才能完成,并输出最少翻转的位置,(多组输出字典序)思路:如果直接尝试枚举每个位置的翻转,那么需要复杂原创 2017-02-21 16:37:26 · 176 阅读 · 0 评论 -
hdu 推箱子
这是一个搜索题,双向搜索题,思路如下:在箱子移动到任何一个位置之前,首先要判断小人能不能走到推箱子的位置,如果能,再继续推,如果不能,则不推。另外这个题需要注意的细节比较多1 某个点可能多次走过,但是走的方向不同,如下面这个数据:0 3 01 4 11 2 10 0 00 0 00 0 0这里 很多点会多次走过,拿(4,2)举例,它会多次走过,但是它走过时人原创 2016-07-18 15:09:39 · 569 阅读 · 1 评论 -
hdu Find a way
这题很简单啊~ 思路:碰到M和Y都进行一遍广搜,然后碰到@时就把位移路径放入ans[i][j] 然后在搜索结束后遍历一遍ans,找出来最小值就行注意:1 如果ans用数组存又初始化的话,没有被赋值的都是0,在用min寻找最小距离时时注意跳过这些2 因为你会搜索两次地图(一次M,一次Y)所以记得每搜索一次之前都要清空visit;代码如下:#include#include原创 2016-07-18 16:12:06 · 419 阅读 · 0 评论 -
hdu Knight Moves
这题真是醉了。一直不知道题目在描述什么,后来问了一个朋友才知道,题目是这样的:一个国际象棋骑士(走法和中国象棋的马一样),最短多少步能跳到目标位置。分析:直接广搜,把位置转化为数字,然后传入bfs函数里面。代码如下#include #include #include #include using namespace std;int visit[10][10],ans;struc原创 2016-07-20 08:21:40 · 254 阅读 · 0 评论 -
hdu Catch That Cow
最开始想用dp做,但是想了想,发现dp不能处理如下数据:6 19 然后发现还是bfs好写在提交时错了一次原因是没有注意可能起点或者终点为0;思路如下: 每个点都可以到达三个位置:i+1,i-1,i*2,然后判断本次到达是否比曾经上一次到达它到达的更早,如果是,就压入队列,用bfs搜索注意:在visit[i*2]时有可能i*2值是大于100000的导致运行出错,所以先判断i*2是否大于1原创 2016-07-20 09:06:08 · 286 阅读 · 0 评论 -
hdu Ignatius and the Princess I
一个标准的BFS问题思路如下:运用BFS 搜索地图,如果某个点到达花费的时间比之前到达花费的时间少,那么就用本次到达的时间标记这个点,然后储存路径我用的数组LJ[][],打印整条路径即可注意1.储存路径的时候只能存储某个点的来源,因此无法打印入口到出口的,所以反向搜索,从出口往入口搜,这样就能保存一条入口到出口的路了2.某个点可能因为先后到达的时间不同而多次经过,如下面这个数据原创 2016-07-20 22:17:55 · 356 阅读 · 1 评论 -
hdu Nightmare
这题是个一般的bfs思路如下:每走一步减一秒炸弹时间,当时间为1 的时候就不能走了,然后第一次到达终点并且时间不为零的时候结束注意事项:1注意标记路,否则有可能在两个炸弹复位装置出来回走2 终点有可能多次到达,并且后到的时间剩余较多,如下面这个数据2 1 1 1 1 30 0 0 4 0 0代码如下:#include #include #include #原创 2016-07-20 22:59:15 · 296 阅读 · 0 评论 -
hdu 逃离迷宫
这题真是坑啊. . . . . 思路比较特别:每次储存转折一次的所有点(4个方向)并标记,然后从这些点中依次储存转折一次的所有点,这样就把最短转折标记了注意事项:1 尼玛这个题是先输入y坐标再输入x坐标的2 如果碰到某个点被标记了,那么应该跳过它,比如下面这个样例数据:0 0 0 0 0 20 6 5 7 0 40 2 0 0 0 00 1 0 4 0 83原创 2016-07-23 11:26:26 · 295 阅读 · 0 评论 -
hdu 懒省事的小明
很简单的一道优先队列问题,思路如下:每次合并最小的两堆,并把新堆放入队列中,直到只剩下一堆为止注意:1 优先队列让最小的在队首要用greater2每次从优先队列取出两个值取两个值,因此当只剩下一个值的时候无法再取两个值了代码如下:#include#include#include#include#includeusing namespace std;struct原创 2016-07-27 11:49:02 · 311 阅读 · 0 评论 -
排列组合,子集生成问题,与nyoj 组合数
最近卡了一下暴力求解,因为比较贪玩,所以进度比较缓慢,百度到的总看不太明白,又没人教,所以决定自己来写一个简单易懂的,毕竟不会这个的一般都是小白,这样和我类似情况的学弟学妹们看到了也能给他节省点时间。好了不说废话了,还是谈谈这类问题吧一 枚举排列:问题: 输出一段数的所有排列。输入 3 输出 1 2 31 3 22 1 32 3 13 1 23 2原创 2016-09-03 17:53:14 · 968 阅读 · 0 评论 -
子序列个数
题目大致描述如下给定一个正整数序列,序列中元素的个数和元素值大小都不超过10^5, 求其所有子序列的个数。注意相同的只算一次:例如 {1,2,1}有子序列{1} {2} {1,2} {2,1}和{1,2,1}。最后结果对10^9 + 7取余数。输入第1行:一个数N,表示序列的长度(1 <= N <= 100000)第2 - N + 1行:序列中的元素(1 输出原创 2016-09-28 11:20:02 · 1158 阅读 · 0 评论 -
poj 3301 Texas Trip 题解
DescriptionAfter a day trip with his friend Dick, Harry noticed a strange pattern of tiny holes in the door of his SUV. The local American Tire store sells fiberglass patching material only in squ原创 2017-09-15 20:38:28 · 384 阅读 · 0 评论