搜索
文章平均质量分 51
KIJamesQi
这个作者很懒,什么都没留下…
展开
-
uva532(三维简单宽度优先搜索)
简单不解释。。。/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(linker, "/STACK:102400原创 2015-10-02 23:09:21 · 608 阅读 · 0 评论 -
LightOJ 1061 N Queen Again(搜索+状压DP)
题目 给出一张8*8的图,上面有8个皇后,现在每次只能移动一个皇后往同一个方向走任意步,总共有8个方向;问最少需要多少步使得所有皇后相互不会攻击对方?思路 单纯的暴搜是不行的,时空都会炸。 假如我们知道最终每个皇后应该在的位置,然后再来计算最少步数就会简单不少,这里可以用状压来做; 因为最终的情况是每行有一个皇后,所以我没需要记录每行皇后所在的列,然后枚举哪个皇后移动到这个位置原创 2017-02-17 19:02:29 · 565 阅读 · 0 评论 -
Gym 100646H You’ll be Working on the Railroad(搜索)
题意就是找一条从0到1的简单路径,费用最小。这里的费用定义如下: 1.路径条数=1,费用就为这条边的费用。 2.路径条数=2,费用就为两条中最小的。 3.路径条数>2,费用等于所有边的费用减去路径中最大和次大的费用。 且要求费用相同的话路径条数最少,路径条数 也也 相同的话字典序最小。/*****************************************Au原创 2016-08-27 15:55:49 · 701 阅读 · 1 评论 -
poj3310Caterpillar(树直径)
1.连通性 2.树 3.求直径struct UNION { int F[101]; void init(int n = 0) { memset(F, -1,sizeof F); } int find(int u) { return F[u] == -1?u:F[u] = find(F[u]); } bool原创 2016-06-23 15:36:30 · 603 阅读 · 0 评论 -
hdu3974Assign the task(简单树hash,线段树区间更新,单点查询)
题目大意:给定一个上下级关系树,一开始都是没有做事的,然后给定x,y,就是指定x及其下属此时全部做事件y。最后就是查询x此时在做那件事情。思路:把子树上的点连续的hash到线段树上去,用线段树更新,hash的时候采用dfs后序遍历。/*****************************************Author :Crazy_AC(JamesQi)Time原创 2016-04-22 16:22:12 · 393 阅读 · 0 评论 -
hdu3639 Hawk-and-Chicken
题目大意n个人相互投票,这投票关系是可以传递的。A投B,B投C,那么C就获得了两票。分析同一个强连通分量的人的票数等于点数减一。现在就缩点,然后逆向建图,从入度为0的点开始搜索。题目链接/*****************************************Author :Crazy_AC(JamesQi)Time :2016/5/25File Nam原创 2016-05-25 22:08:34 · 611 阅读 · 0 评论 -
uva1459Flowers Placement(二分图+dfs)
/*****************************************Author :Crazy_AC(JamesQi)Time :2016File Name :给定n行m列的花的摆放方式,要求就是每行每列不出现同色的,求第k字典序的摆放方式。思路:从第一行开始枚举放什么花色,然后就是判断是否和题目的要求,这里的判断方式就是二分图的dfs部分同原创 2016-03-25 15:44:43 · 385 阅读 · 0 评论 -
5335Walk Out(贪心+bfs)
/*****************************************Author :Crazy_AC(JamesQi)Time :2016File Name :给定一个n*m的01矩阵,问从左上角走到右下角这个路径中经过的01构成一个二进制串,求最小的串;思路:串的长度必然 < n + m;尽量让前面的1出现得更晚,也就是0尽量的长。对于这种原创 2016-03-24 21:46:05 · 308 阅读 · 0 评论 -
hdu4607Park Visit(求树的直径)
给定的树中,任选一个点开始走,访问k个点,求最小路径长度。思路:现求出树的直径r,如果k不然的话,就要走直径上链接的分支了,出了直径上的点还需要走k-r个点,此时的额外路径就是(k - r)*2。/*****************************************Author :Crazy_AC(JamesQi)Time :2016File原创 2016-03-24 17:22:20 · 363 阅读 · 0 评论 -
poj 1816Wild Words(字典树+dfs)
这题建立字典树然后搜索还是挺容易想到的,对?和*特别处理,主要是*不是很好处理。因为?可以代表人意字符,而*是代表一个串。其实每次判断*存在之后就枚举*中压缩字符串的长度就好了。/*****************************************Author :Crazy_AC(JamesQi)Time :2016File Name :原创 2016-03-22 18:26:39 · 425 阅读 · 0 评论 -
lightoj1150 - Ghosts!
先预处理出来每个ghost到每个human后杀掉他后返回窝的最少时间。然后人份时间上限建图,二分匹配判断匹配数目是否等于human的数目。。。/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*******************原创 2016-02-03 22:20:55 · 404 阅读 · 0 评论 -
lightoj1426 Blind Escape
思路:有一个r*c的grid,里面有两种字符,'#'表示墙,不可穿过,'.'表示free,可穿过,现在在这个里面有一个盲人,他可以向东南西北四个方向走,需要靠你给的指令走出来,如果不能走出来就是Impossible,不然的话输出最短且字典序最小的命令串。显然是搜索,当然不能走出来最好判断,每个点搜一遍就好了,最后判断下。问题就是可以走出来的时候怎么搜。首先是queue中的状态是啥,这里的话原创 2015-12-13 00:25:15 · 419 阅读 · 0 评论 -
LA3902 Network
思路:无向树转成有向树,dfs;然后就是k距离染色标记;/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma comment(li原创 2015-10-05 22:26:59 · 319 阅读 · 0 评论 -
uva784(直接bfs)easy
思路:题目很好理解,输出一个地图。’X‘代表墙,如果有*的地方,就往四面八方扩散,能到的地方就变成’#‘。题意:直接搜索地图,走过的点变成’#‘即可#include #include int dx[] = {-1,0,1,0};int dy[] = {0,-1,0,1};char mp[40][85];int a,b;int tot;int find(){ for (i原创 2015-10-02 23:12:15 · 486 阅读 · 0 评论 -
LightOJ 1055 Going Together (暴力搜索……繁琐)
题目 一张n*n的格子图,上面有空地、障碍物、三个出口和三个小人;每次一条指令让他们往四个方向移动一格,不能动的原地不动,动的就移动一格;一个格子上最多同时只有一个人思路 暴力bfsconst int dx[] = {0, -1, 0, 1};const int dy[] = {1, 0, -1, 0};bool mark[11][11][11][11][11][11];char原创 2017-02-14 15:16:35 · 400 阅读 · 0 评论