搜索
文章平均质量分 68
dumeichen
这个作者很懒,什么都没留下…
展开
-
poj 1419 最大团
题意:求给定图像的最大独立点集思路:即求其补图的zuida原创 2014-07-11 16:50:05 · 415 阅读 · 0 评论 -
poj 1164 dfs水题
题意:给出一个二维房间信息,每个格子的数字表示哪边有墙,用位来表示。求一共有几间屋子(由连通的格子组成),以及最大的房间含有的格子数量。思路:dfs即可。#include #include #include #include #include #include #define N 55using namespace std;int n,m;int flag[N][N];原创 2015-07-21 09:01:16 · 441 阅读 · 0 评论 -
poj 2676 dfs/DLX(数独)
题意:数独游戏,用零代表空格。思路:从第一个空格开始深搜,遇到解便原创 2014-07-09 21:26:29 · 401 阅读 · 0 评论 -
poj 1011/2362 dfs+剪枝(拼木棍)
题意:乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。思路:dfs+剪枝。其中剪枝具有相当的技巧性,其中一个地方的剪枝没有想到导致tle多次。几个明显的剪枝点(设ans为最终的答案原创 2015-02-28 10:49:29 · 989 阅读 · 0 评论 -
poj 1190 dfs+剪枝(生日蛋糕)
题意:中文题。要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。 设从下往上数第i(1 Ri+1且Hi > Hi+1。 由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。 令Q = Sπ 请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小。 (除Q外,以上所有数据皆为正整数)思路:主要第三个剪枝比较难想:设剩余总体积原创 2015-04-06 12:01:01 · 576 阅读 · 0 评论 -
poj 3278 bfs(抓住那头牛)
题意:农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(01、从X移动到X-1或X+1,每次移动花费一分钟2、从X移动到2*X,每次移动花费一分钟假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?思路:简单bfs即可。可以自己手动写队列,也可以用stl,注意结构体的初始化操作写法。手动队列:#include #include原创 2015-07-22 08:52:41 · 1938 阅读 · 1 评论 -
poj 1753/2965 bfs+位运算(关灯游戏/开冰箱门)
题意:关灯游戏,求使得画面全是同一个颜色为止。注意:棋盘一共有16个位置,每个位置最多翻转一次,所以搜索空间最大为2^16每一种状态用一个数字表示原创 2014-07-10 17:16:35 · 711 阅读 · 0 评论 -
poj 2436 位运算+组合枚举
题意:一个农场有N只奶牛,现在发现出现了D种疾病,已知每头奶牛都得了哪几种疾病。现在要选出尽可能多的奶牛,使得这些奶牛所带的疾病种类不大于K种,问最多能选几只。思路:疾病不多于15种,很显然暗示位运算。每一位表示一种疾病。先求出组合数C(D,K)表示的疾病,对于每种搜索N只奶牛,计数即可。一开始先把疾病数量大于K的奶牛直接删去,然后对于重复的奶牛hash一下。#include #incl原创 2015-09-10 15:47:02 · 440 阅读 · 0 评论 -
poj 2531 dfs(最大割)
题意:裸的最大割问题,图按照邻接矩阵给出,定点数小于等于20.思路:最大割是NP难的,这里用搜索的方法做。有一个小剪枝,就是先算出所有点临边的权值之和。搜索的时候加上后面所有点的权值之和如果大于求出的最大割才继续搜。#include #include #include #include using namespace std;#define clr(s,t) memset(s,t原创 2015-11-06 21:23:58 · 551 阅读 · 0 评论 -
poj 2420/1379 随机/模拟退火(求费马点/最偏离点)
题意:给出平面中一些点,求平面中的一个点,使得这个点到其他所有点的距离之和最短(这个点叫作费马点),并输出这个距离和。思路:先随机取个点,再取一个步长,朝4个方向走。如果新位置到各点距离比原来小,就走过去;直到当前位置比四周都好,此时缩小步长。如此迭代,直到步长小于题目的精度(这道题是0.1)输出即可。实际上缩小步长蕴含了模拟退火的思想。不过模拟退火中还可以按照一定概率留在原地(即使移动可以获原创 2015-04-05 01:20:57 · 945 阅读 · 0 评论 -
poj 1033 文件移动
题意:磁盘n个块,有m个文件,各自被分割成许多块分散在磁盘之中,要求通过最少移动次数使得第1个文件的占1,2,3...f1块,第二个文件占f1+1,f1+2...f1+f2块。。。思路:dfs(k)为将第k位置填好。#include #include #include #include using namespace std;#define N 10005int n,m;in原创 2016-02-14 21:35:59 · 465 阅读 · 0 评论 -
poj 3051 dfs(二维矩阵求*连通的最大区域)
输入:10 5..*.....**.**..*****.*...*......****.***..****.***原创 2014-07-07 17:04:23 · 3446 阅读 · 0 评论 -
poj 1564 dfs(Sum It Up)
题意:给定一个数sum,以及n个数s1原创 2014-08-19 20:11:01 · 443 阅读 · 0 评论 -
poj 1635 由搜索序列判断树是否同构
题意:给定两个搜索序列,原创 2014-08-15 19:47:51 · 505 阅读 · 0 评论 -
poj 1496(1850)/2245 全组合打表或者数位dp(一种字符编码/Lotto)
题意:一直a -> 1;b -> 2;z -> 26;ab -> 27;ac -> 28;az -> 51;bc -> 52;vwxyz -> 83681原创 2014-08-23 18:28:46 · 511 阅读 · 0 评论 -
poj 1315 dfs(带障碍的类八皇后)
简单dfs#include #include #define max(a,b) ((a)>(b)?(a):(b))#define N 5char s[N][N];int flag[N][N],n,res,now;void dfs(int d,int s[N][N],int ava){ int x = d/n; int y = d%n; int i,j,t[N][N]; fo原创 2014-08-26 21:17:53 · 828 阅读 · 0 评论 -
poj 1111 dfs(求连通块周长)
题意:先输入一个矩阵,再输入一个起始位置,然后输出与这个X在八个方向能够连起来的所有X组成的图形的周长。思路:找到这个连通块显然深搜即可。找周长也很简单,只要对每个位置看看其四周是否不为X,如果是,周长加1。程序里将所有位置初始化为‘.'方便判断。#include #include #include #include #include #include using namesp原创 2015-08-26 08:32:46 · 494 阅读 · 0 评论 -
poj 1915/2243 bfs(马走日)
题意:给定一个n*n的棋盘,一个起点坐标,一个终点坐标。问从起点“走日”到终点的最少步数。走日即象棋里的马走日。思路:bfs水题。#include #include #include #include #include #include using namespace std;#define clc(s,t) memset(s,t,sizeof(s))#define INF原创 2015-08-18 16:42:33 · 1260 阅读 · 0 评论 -
poj 1204 trie树/AC自动机(在二维词表中找词)
题意:给定一个n*m大小的二维词表(0思路:一开始想也没想就写了暴搜,果断TLE。之后瞄了一眼题解都说用trie或者ac自动机。就算这样还是没想出怎么用trie存词表。原来是用trie存待查得单词,对于词表,仍然是暴搜。注意虽然题目中没给每个单词的长度,但是长度上限可以确定,也就是词表的长或宽的上限,即1000。(一开始还在想对角线最长,大概是1000倍的根2,犯傻逼了)有个地方还是没太明原创 2015-02-12 15:54:59 · 358 阅读 · 0 评论 -
poj 1256 全排列(含有重复字母)
1256原创 2014-07-17 15:48:03 · 637 阅读 · 0 评论 -
poj 1979 迷宫搜索
题意:区域有两种标记,点和井号,只能走点原创 2014-07-09 16:33:12 · 436 阅读 · 0 评论 -
poj1731 有重复全排列
题意:给定几个小写字母(含重复),按照字典序输出其全排列思路:原创 2014-07-09 16:40:14 · 661 阅读 · 0 评论 -
poj 1606 bfs(倒油)
题意:有两个有瓶子,容量给定,初始为空。有六个动作可以选择:原创 2014-07-17 21:13:39 · 607 阅读 · 0 评论 -
poj 1416 组合数(DIY碎纸机)
题意:公司现在要发明一种新的碎纸机,要求新的碎纸机能够把纸条上的数字切成最接近而不超过target值。比如,target的值是50,而纸条上的数字是12346,应该把数字切成四部分,分别是1、2、34、6。因为这样所得到的和43 (= 1 + 2 + 34 + 6) 是所有可能中最接近而不超过50的。(比如1, 23, 4, 和6 就不可以,因为它们的和不如43接近50,而12, 34, 6也不可原创 2014-08-22 21:39:31 · 730 阅读 · 0 评论 -
poj 1324 bfs(一条蛇要出洞)
题意:有一个(n*m)矩形区域,思路:原创 2014-08-28 19:13:28 · 449 阅读 · 0 评论 -
poj 1699 搜索(AGCT组成最短串,题目有BUG)
题意:给定若干个DNA(由AGCT组成)串,求一个能够包含所有四原创 2014-08-16 17:13:28 · 646 阅读 · 0 评论 -
poj 1691 dfs(矩形涂色)
题意:有一个矩形框由n个小的矩形组成,现在要把每个矩形涂上一种给定的颜色c(可相同可不同,如下图)。涂每个小矩阵有一个条件,就是位于它上面,并且与它连接的小矩形必须先涂好。当然满足条件的同一种颜色可以一起涂,问最少需要多少把刷子(每把刷子一种颜色,如果刷子拿起来多次,那么这些都要加上)。原题上有图(http://poj.org/problem?id=1691)思路:dfs。先遍历每对小矩形,确原创 2015-01-29 21:05:50 · 475 阅读 · 0 评论 -
poj 1980 dfs+剪枝(Unit Fraction Partition)
题意:给定一个分数,问用分子为1的分数加和来构成这个分数有多少种方式。要求每种情况分数的个数不超过n,分母乘积不超过a。思路:搜索。一开始做犯了一个错误导致一直TLE,就是把当前分数和的分子和分母存为全局变量,导致每次dfs之后还要把当前加上的分数剪掉,浪费了太多时间。具体细节见注释!#include #include #define min(a,b) ((a)<(b)?(a):(b)原创 2015-04-05 23:43:29 · 619 阅读 · 0 评论 -
poj 3074/3076 数独(Dancing Links)
题意:经典的数独游戏,不过此题的范围更大,是16*16的方阵。思路:Knuth大神提出的Dancing Links(DLX),具体可以参见他的论文。而对于Dancing Links的数据结构讲述的比较好的有(http://www.cnblogs.com/grenet/p/3145800.html,这篇论文的图画的非常仔细),而代码写的比较清晰的是(http://www.cnblogs.com/原创 2015-04-12 22:44:31 · 428 阅读 · 0 评论 -
poj 3740 DLX(精确覆盖)
题意:经典的精确覆盖问题。思路:精确覆盖问题是NPC的,用DLX能够比较有效的搜索。写完两个数独再写这个就不难了(实际上这个是原始问题,数独只是DLX的应用)。#include #include #define N 16#define M 300struct node{ int l,r,u,d,x,y;}p[N*M+M+5];int s[N+5][M+5];int n原创 2015-04-14 10:15:45 · 541 阅读 · 0 评论 -
poj 1985 树的直径
题意:求树的直径。树的直径即树上距离最远的两个点之间的距离s原创 2014-07-14 21:30:40 · 667 阅读 · 0 评论 -
poj 3026 bfs+mst(消灭外星人)
题意:给出一个二维字符串,里面有#代表不能走,' '空格代表可以走,然后还有'A'和'S'代表人,问从S到达所有'A'的最小通路,其中S点或者走到一个A点时可以分身。思路:从其中每个人的位置开始深搜求出到其他点得距离。在这个图上求MST即为所求。深搜的时候用一维保存位置,4个方向变成了+1,-1,+m,-m。此时需要注意+1和-1是否出现换行的情况。#include #include原创 2015-02-26 19:10:04 · 358 阅读 · 0 评论 -
dfs 拯救行动
题意:公主被恶人抓走,被关押在牢房的某个地方。牢房用N*M (N, M 思路:除了需要杀死守卫,其余的就是普通的迷宫问题。对于守卫的处理方法为:在队列中加入一个标记位,当第一次遇到守卫时,将标记为置1再次加入队列。#include #include #include #include #include #include #define min(a,b) ((a)<(b)?(a)原创 2015-07-26 18:37:19 · 954 阅读 · 0 评论 -
百练4103 踩方格
题意:有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:a. 每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b. 走过的格子立即塌陷无法再走第二次;c. 只能向北、东、西三个方向走;请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。思路:糊里糊涂想也没想写了个dfs,居然在百练上过了。后来仔细一想,动归或者说递原创 2015-07-26 18:50:25 · 705 阅读 · 0 评论 -
poj 1077 bfs+康托展开(8数码问题)
题意:8数码问题思路:bfs,用康托展开来原创 2014-08-05 16:06:53 · 741 阅读 · 0 评论