
ACM-搜索
Helios_nannan
得失成败,都只对自己交代
展开
-
poj 2488 A Knight's Journey 水DFS
传送门:poj 2488 A Knight’s Journey 题目大意有一个p*q的棋盘,有一个棋子只能走日字形,请问这个棋子能遍历完这个棋盘么, 行是按照大写字母的顺序也就是A,B。。。一直有p个 列是按照数字的顺序也就是1,2,。。。q 有q个 如果能遍历完这个棋盘输出遍历的路径。 如果不能输出impossible 输出的格式按照题目中给定的解题思路简单地DFS也没有什么坑#inc原创 2016-07-10 16:59:43 · 346 阅读 · 0 评论 -
hdu 5952 Counting Cliques 暴力搜索 2016沈阳区域赛
题目链接:hdu 5952 Counting Cliques 题目大意n≤100 个点,m≤1000 条边的图,求大小恰好是 s≤10 的团的数量。解题思路因为题目中已经说了每个点的度不超过20,并且s≤10s≤10,我们就可以按照每个节点为起点进行搜索,只要搜索到了就把答案+1,还有一个问题就是怎么保证搜索的时候不重复的问题,我们可以额外的申请一个数据结构,判断当前的节点是不是和已经在这个数据结构原创 2016-10-31 20:47:11 · 715 阅读 · 1 评论 -
hdu 5546 Ancient Go(2016ccpc) 暴力DFS
传送门:[hdu 5546 Ancient Got](http://acm.hdu.edu.cn/showproblem.php?pid=5884解题思路先找到对方的棋子也就是’o’点,然后判断对方点旁边的’.’是不是大于1如果大于1是肯定不行的,否则就是正确的!AC代码#include <cstdio>#include <cstring>#include <iostream>using na原创 2016-09-17 23:06:06 · 697 阅读 · 0 评论 -
poj 2631 Roads in the North BFS/树状DP
传送门:poj 2631 Roads in the North题目大意输入边的两个顶点和权值,输出任意两个顶点的最远距离;解题思路这是一个裸的求树的直径的题目。 先说用BFS的方式,第一个BFS随便找一个顶点进行松弛,找到最远的一条路径并且记录下来那个顶点,因为这个距离肯定是包含在了最后的最长路径里面,所以在对刚才找到的那个节点进行一次BFS找到就是树的直径。AC代码#include<cstdio原创 2016-08-13 18:51:36 · 423 阅读 · 0 评论 -
BNU 1642 简单的图论问题? 最短路+BFS
传送门:简单的图论问题? 中文题目不做过多的解释解题思路输出的第一个就是使用简单dijsktra就可以了,对于有趣的情况使用优先队列+BFS就可以,这两种情况分别处理AC代码#include<cstdio>#include<cstring>#include<queue>#include<cmath>using namespace std;const int MAXN = 505;con原创 2016-08-11 00:20:33 · 490 阅读 · 0 评论 -
SGU 149 Computer Network 树状DP求单点到树的最大距离
传送门;Computer Network题目大意这个题目主要是输入理解了好长时间,不安正常的顺序出牌呀!! 第一行输入的是点的数量,下面的N-1行(从第二行开始),第一个数和第几行这个数相连,也就是和i相连。第二个数是权值!解题思路解题思路,这个和求树的直径是异曲同工的!第一个DFS中的dp[i][0]表示第i个节点到子树的最大距离,dp[i][1]表示第i个节点到子树的次长距离!然后第二个DFS原创 2016-08-16 12:55:20 · 592 阅读 · 0 评论 -
poj 1426 Find The Multiple bfs+同余模定理
传送门:poj 1426 Find The Multiple题目大意给出一个整数n,(1 <= n <= 200)。求出任意一个它的倍数m,要求m必须只由十进制的’0’或’1’组成。解题思路这篇文章写得很好了poj 1426 Find The MultipleAC代码#include<cstdio>#include<cstring>#include<set>#include<stack>#i原创 2016-07-06 15:23:54 · 379 阅读 · 0 评论 -
poj3262 Prime Path 素数打表+bfs
传送门:poj3262 Prime Path题目大意两个四位数a,b,要求从a变到b,每次只能变四位中的一位,并且每次变换之后必须是素数,比如:从1033变到8179会经历下面几个过程: 1033 1733 3733 3739 3779 8779 8179输入:第一行输入有n组数据, 接下来的n行数据,每一行有两个四位整数,要求从第一个变换为第二个数, 输出变换次数解题思路这个和p原创 2016-07-05 13:51:47 · 375 阅读 · 0 评论 -
poj3278 Catch That Cow 水BFS+简单剪枝
传送门:poj3278 Catch That Cow题目大意一个农夫想要抓到出走的牛,农夫站在n位置,这头牛在k位置(同一个水平线上),农夫从该位置有两种方式出发: 1. 每次到达该位置前一个位置(i-1)或者下一个位置(i+1) 2. 没次到达该位置的两倍的位置(i*2)解题思路水BFS,看下面代码的剪枝,如果不进行相应剪枝的话会RCAC代码#include<cstdio>#include<原创 2016-07-05 09:57:04 · 481 阅读 · 0 评论 -
POJ2965 The Pilots Brothers' refrigerator dfs
传送门:POJ2965 The Pilots Brothers’ refrigerator题目大意这个题目和poj的poj1753题目有点类似只不过这个是每次点击的时候相应的行和列均发生了变化。 最后当门全开的时候结束解题思路一共有16个位置,从0到16十七个状态,就按顺序搜索这17个状态, 对于每个位置有两种情况(开/关),也就是说我们每次搜索1<<16中情况。AC代码#include<cst原创 2016-07-03 18:37:01 · 343 阅读 · 0 评论 -
poj3984 迷宫问题 简单bfs打印路径
题目传送门:poj 3984 迷宫问题 这个是中文题目,是很好理解的。 这也是一道很好的bfs模板题目。AC代码#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<cstdlib>#include<iostream>using namespace std;struct Node{原创 2016-07-03 13:42:58 · 1356 阅读 · 0 评论 -
poj1753 Flip Game 状态压缩+bfs
传送门:poj1753 Flip Game题目的大意在一个4*4的方格里面放黑或者白之一的卡片,当选中一个的,选中的那个就会翻转(如果是白色变为黑色,如果是黑色变为白色),伴随着他四周(上下左右)的的卡片也会翻转。就像下面这种情况, 如图所示,假设我们点击第三行第一列的时候不仅仅第三行第一列会变换状态,相应的第二行第一列,第三行第二列,第四行第一列也会变换,当然如果左边有的话也会变换状态。上图对应原创 2016-07-03 10:34:33 · 532 阅读 · 0 评论 -
poj 1077 Eight 八数码问题( 康拓展开+BFS状态压缩)
传送门:poj 1077 Eight题目大意输入的八数码 将一个八数码最后转换为 1 2 3 4 5 6 7 8 x 的格式,然后打印出路径康拓展开如果按照平常的思路,把x的位置看做0,一共有8!个状态,来判断某一个状态是否被访问过。 但是问题来了?怎么把一个带有x的数组转变为转变为数字呢?第一个联想到的就是STL中的map,但是map的速度太慢了,会超时,这个时候我们就要用一种快速的原创 2016-07-12 15:11:45 · 1727 阅读 · 2 评论 -
csu Kick the ball! 概率+DFS
传送门:csu Kick the ball!题目大意足球点球,两个队伍轮流踢,看最后的比分。如果某一个队伍已经不可能取胜了,就提前终止比赛,比如说比赛进行到了第九局第一只队伍踢完之后变为了4-2的比分那么就没有踢下去的必要了,就提前终止比赛,如果第九局之后是3-2的比分的话,那么第二组的球员还是有必要踢下去的,因为比赛是允许平局的。解题思路DFS一直搜下去如果到达的预测比分的状态并且比赛结束就可以了原创 2016-07-11 23:06:47 · 473 阅读 · 0 评论 -
hdu 1495 非常可乐 BFS+倒水问题
传送门:[](http://acm.hdu.edu.cn/showproblem.php?pid=1495hdu 1495 非常可乐) 题目是中文的没有什么理解问题解题思路先来把问题特殊化,假如我们有三个容器分别容量是6升,3升还有一升,现在我们把六升的容器装满水,问经过多少次之后能到达给的4升。这个我们很容易通过简单地思考就能知道答案,过程为: (6,0,0)->(3,3,0)->(3,2原创 2016-07-11 22:42:08 · 992 阅读 · 1 评论 -
poj2676 Sudoku dfs
传送门:poj2676 Sudoku题目大意九宫格问题,也有人叫数独问题 把一个9行9列的网格,再细分为9个3*3的子网格,要求每行、每列、每个子网格内都只能使用一次1~9中的一个数字,即每行、每列、每个子网格内都不允许出现相同的数字。0是待填位置,其他均为已填入的数字。 要求填完九宫格并输出(如果有多种结果,则只需输出其中一种) 如果给定的九宫格无法按要求填出来,则输出原来所输入的未填的九宫原创 2016-07-11 12:17:32 · 414 阅读 · 0 评论 -
hdu 2553 N皇后问题 dfs回溯
传送门:hdu 2553 N皇后问题 是中文题目就不用说过多的说明了。解题思路这个题目主要是进行递归的条件有一些难想一点。 还有就是如果不对所有的情况进行一次打表的话,很容易超时的! 对应于递归条件我们我们可以用一个vis[2][x]数组来分别保存已经放置的皇后占据了哪些列、主对角线和幅对角线AC代码#include<set>#include<map>#include<queue>#in原创 2016-07-10 17:11:57 · 371 阅读 · 0 评论 -
第五届蓝桥杯-9.地宫取宝 (记忆化搜索)
传送门:第五届蓝桥杯-9.地宫取宝dp[i][j][k][l]dp[i][j][k][l]表示在第(i,j)(i,j)位置拿了kk件物品中的最大价值为ll的方法数。然后记忆化一下就可以了AC代码#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const原创 2017-03-30 13:32:48 · 803 阅读 · 0 评论