图论——简单搜索
倚剑笑紅尘
教练,我想学kaldi!
展开
-
POJ 1321-棋盘问题(A)
一道简单的深搜题,深搜函数的参数为当前行数和剩余需要摆放的棋子数,对每行每个可放的棋子位置进行深搜,或者该行不放棋子。#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> using namespace std; #define maxn 10 int n,k,num; bool vis[maxn];//判原创 2017-07-05 15:08:21 · 275 阅读 · 0 评论 -
UVA11624 Fire! 两次BFS(J)
Fire! Joe works in a maze. Unfortunately,portions of the maze have caught on fire, and the owner of the maze neglectedto create a fire escape plan. Help Joe escape the maze. Given Joe's location in原创 2017-07-07 16:16:08 · 334 阅读 · 0 评论 -
FZU 2150 Fire Game(I)
Problem 2150 Fire Game Accept: 2332 Submit: 8128 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description Fat brother and Maze are playing a kind of special (hentai) gam原创 2017-07-07 14:42:38 · 264 阅读 · 0 评论 -
POJ 3414 Pots (BFS) (H)
Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17080 Accepted: 7238 Special Judge Description You are given two pots, having the volume of A原创 2017-07-07 11:33:26 · 186 阅读 · 0 评论 -
POJ 3087 Shuffle'm Up(模拟) (G)
Shuffle'm Up Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7404 Accepted: 3421 Description A common pastime for poker players at a poker table is to shuf原创 2017-07-07 10:36:11 · 252 阅读 · 0 评论 -
POJ 3279 Fliptile (暴力枚举)(D)
题意:给出m行 n列 由0和1组成的矩阵 现在需要经他们全部翻转成0 翻转规则为:翻转的点和周围四个点同时翻转 即0变1 1变0 最后如果有多个解 输出次数最少的情况 如果翻转次数相同 则输出字典序最小的 思路:翻转2次等于不翻 所有每个位置要么不翻要么不翻 如果第一行的翻转次数确定的话 那么剩下位置的翻转次数也唯一确定 第一行的所有情况为2^n次 枚举即可 #inc原创 2017-07-06 17:47:26 · 242 阅读 · 0 评论 -
HDU1241 Oil Deposits (L)
题意:给以个n*m的矩阵 ‘@’代表有矿 ‘*’代表没矿 @之间彼此连接在一起的算作是一处矿(包括水平 竖直 斜对角接触) 输出共有多少出矿藏 思路: 从第一个位置开始枚举 如果遇到@ 个数就加一 并且将它周围的@设置为已经访问过 同时对周围的@的周围进行探索 直到没有为止 重复上述操作 直到所有格子都已经被枚举完为止 其中要加k用于区分 是不是这堆矿中第一个矿点 防止原创 2017-07-05 23:42:09 · 214 阅读 · 0 评论 -
HDU 2612 Find a way(双BFS) (N)
题意:两个人分别从Y,M两个点出发,到达途中的一个@点,求最少的两个时间和。其中.代表道路可走,#代表障碍不能走,不走一步需要11分钟,并且最后题目一定会有个@点两者均能到达 思路:双BFS,从两个点分别bfs计算到其他点最小距离,然后两个相加找一个最小的即可。 其中有个一容易WA的点是,因为可能某个@点不能到达,所以距离为0,不要判定最小时就当他为0了,需要把不能到达的点排除掉 #incl原创 2017-07-06 15:30:37 · 222 阅读 · 0 评论 -
HDU 1495 非常可乐(广搜BFS) (M)
题意:相当于泊松分酒问题的简化版 三个杯子 容量为a,b,c 且a==b+c,一开始的时候a装满,求最少步数均分,如果不能输出NO 思路:广搜 每次都搜索6个操作 就是他们互相倒来倒去 用vis数组来判断这个状态是否已经出现过了进行剪枝 #include #include #include #include #include #include using namespace std;原创 2017-07-06 10:45:22 · 314 阅读 · 0 评论 -
K - 迷宫问题
题意:一个5*5的矩阵从左上角(0,0)到右下角(4,4)的最短路径 0代表可走 1代表障碍不能走 思路:用pair存坐标放在queue中用于广搜 同时用一个结构体记录每个点的前一个结点 最后处理下输出即可 #include #include #include #include #include #include using namespace std; #define maxn 6 i原创 2017-07-05 23:01:46 · 350 阅读 · 0 评论 -
POJ 3126 Prime Path (BFS) (F)
题意:给出两个数 求左边的数变到右边的数需要几步 变得方法是: 从一个四位数变成另一个四位数,每次只能变其中的一位数,且每次变的数都是质数(题目给出的两数均为质数) 思路: 在输入之前 先用数组将1-10000内的质数全部进行标记 枚举 从第一位到第四位 每位的数字从0到9,一一检验是否为质数 是的话 他的步数为前者+1,同时标记已经被访问过了 #include #incl原创 2017-07-05 21:04:51 · 311 阅读 · 0 评论 -
POJ1426 Find The Multiple(E)
题目大意是给出一个数n,找出一个数要求是n的倍数,并且这个数的十进制只由1和0组成,要求输出任意一个满足该条件的m 可以用深搜 从1开始每次对他*10和*10+1查找能否被n整除 这个数应该是longlong范围内(不要问为什么 我猜的) 所以根据longlong范围 最多乘19次 #include #include #include #include #include using na原创 2017-07-05 20:09:17 · 255 阅读 · 0 评论 -
HDU2717 Catch That Cow(C)
题意:给出初始点和目的地的位置。 有两种交通方式:步行和远程传送。 步行:可以在一分钟内从任何点X移动到X-1或X + 1点 传送:可以在一分钟内从任何点X移动到点2×X。 问最少几分钟到达目的地#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<qu原创 2017-07-05 17:54:40 · 283 阅读 · 0 评论 -
poj2251 Dungeon Master(B)
题意:你被困在三维空间中,给你高宽长和地图,问最少走几步才能走出迷宫 #是障碍不能走 .是空地可以走 思路:因为是求最少步数,显然是一道广搜的题目。用pair来存储坐标,然后用队列来进行广搜。#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<queue> using namesp原创 2017-07-05 16:27:52 · 309 阅读 · 0 评论 -
hdu 5952 Counting Cliques(dfs优化) 2016ACM/ICPC亚洲区沈阳站
题目链接;点击打开链接 题目大意:给一n个点m条边的图,找一个有s个顶点的完全子图。 什么是完全子图?即子图中每个点到其他点都有一条边相连 思路: 对于每个s点完全子图,如果i点在子图中,那么就枚举与i有边的其他点,每加入一个点,就判断一下是否和其他已加入的点有边,如果是就可以加入,否则不能加。 最后再优化一下:防止重复计算,对于搜过点从图中删去。这样就不用标记判重了原创 2017-08-28 21:22:52 · 328 阅读 · 0 评论