
搜索
文章平均质量分 78
cscoder
这个作者很懒,什么都没留下…
展开
-
[NOIP2000]单词接龙
题目了链接:http://www.rqnoj.cn/Problem_608.html题目数据量不是很大,直接深度搜索即可。首先建立一个图,用于存储任意两个单词之间的关系,如果是一个单词中的若干尾字符是另一单词的前缀,则存储其公共长度。由于每个单词可用两次,所以需要用一个数组来记录使用情况。代码如下:#include#include#includeusing namespac原创 2012-04-03 00:20:25 · 1944 阅读 · 0 评论 -
POJ 1190 生日蛋糕
生日蛋糕一道很经典也很基础的搜索题目。有题目的条件我们可以得到两个方程:sum(Rk*Rk*hk) = N 和 S = sum(2*Rk*hk)+R1*R1首先考虑极端剪枝法。假设前i层体积为T,如果剩下的若干层,每层都去最小可能值,体积仍比N大,则剪去,如果剩下几层都去最大值,体积仍比N小,也减去。如果当前的表面积比S大,则剪去。然后考虑一个隐藏的条件,我们可以由式子sum(Rk *原创 2012-08-06 13:11:32 · 514 阅读 · 0 评论 -
zoj2412:Farm Irrigation
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2412题目大意:有A~K种类型的田地,每种类型的田地都有一中水管类型,现在有一块农田,这块农田有以上类型的水田组成,求至少需要多少个水源。题目很简单,刚开始看到时候想将每种类型的田地,能与其组合在一块的田地,逐一枚举出来,但是编程的时候发现数据量太大了,然后就写不原创 2012-03-24 21:54:22 · 442 阅读 · 0 评论 -
POJ 2251 Dungeon Master
Dungeon Master题目是对三维地图的搜索,用bfs求最短时间。同二维的情况一样,都是一样的搜索。代码如下:#include#include#includeusing namespace std;#define MAXN 5000#define NMIN 35struct Node{ int x ; int y ; int z ; int s ;};i原创 2012-06-15 18:15:47 · 403 阅读 · 0 评论 -
POJ 3126 Prime Path
Prime PathBFS。题目大意:给定两个个数(4位数)a ,b ,用0~9置换a中的一位,然后得到一个新数,要求这个新数是素数,然后对这个新数同样操作,直到得到的数与b相同,求最少的步骤。直接BFS就好,由于是4位数,所以先打表求出4位数中的所有的素数,要求,最高位不为0,这一点可以由第二组数据得到。#include#include#define MAXN 10005bool原创 2012-06-15 16:18:28 · 372 阅读 · 0 评论 -
POJ 1426 Find the Mutiple
Find the Mutiple题目就是寻找一个数m,使得m%n=0,且有m中只包含0和1 。这一题是参考别人的思想写的。由于m中只包含0和1,我们得知m的最高位必然为1,那么由这一点我们就可以开始搜索了。如果m%n != 0 , 那么需要在m后添加1或者添加0,然后进行判断。我们用一个队列来维护这样一个m的序列集合。然后不断的判断。代码如下:#include#include#i原创 2012-06-12 21:42:59 · 439 阅读 · 0 评论 -
POJ 3278 Catch That Cow
Catch That Cow直接用bfs,由于有三种选择,+1 , -1 , *2 , 这里我们需要判断一下,有些情况下无论如何搜索都不可能获得最优解。设当前的位置为n , 牛的位置为k,那么有:如果n > k的时候选择*2 ,与+1肯定不会得到最优解。故在这里有个剪枝。在就是当搜到的时候即退出就可以了。#include#include#define MAXN 200010#d原创 2012-06-12 16:32:03 · 392 阅读 · 0 评论 -
POJ 1321 棋盘问题
棋盘问题这道题目与八皇后问题相似,唯一的区别就是n > m,这就使得棋盘中可能存在空行,即使某一行中有可以放的位置也不能选。这题的剪枝还是有很多可以考虑的。我考虑了如下几个剪枝点:1). 当剩余的可放位置小于剩余的要摆放棋子的个数的时候,就不需在继续搜索下去了,一定不会得到解。2). 由于每一行每一列只能放置一个棋子,所以当剩余的行数小于剩余的棋子的个数的时候就不需要在搜索,一定得原创 2012-06-12 14:58:48 · 411 阅读 · 0 评论 -
POJ 2488 A Knight's Journey
A Knight's JourneyDFS题目,采用回溯的方式接着道题目,这个题目,是求序列中最小的,那么我们只需保证在搜索的时候每次都搜索为搜索的序列中最小的即可。只需要在搜索方向的时候注意一下即可。优先搜索靠近左侧的,同样的情况下优先搜索靠近底边的。代码如下:#include#includeint map[30][30] ;int dir[][2] ={{-2 , -1} ,原创 2012-06-11 14:51:10 · 338 阅读 · 0 评论 -
POJ 1915 Knigth Moves
Knight Moves在棋盘上从某个点出发以最短的距离到达另一个点。直接用BFS。代码如下:#include#include#includeusing namespace std ;struct Node{ int x ; int y ; int s ;};int n ;int l ;int map[305][305] ;int dir[][2] ={{-原创 2012-06-09 21:39:04 · 403 阅读 · 0 评论 -
ZOJ 1008 Gnome Tetravex
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=8题目意思很简单,数据量也比较小,只需用dfs即可,不过还是需要剪纸,对于相同的类型的卡片记录数量,这样才不会超时。对于每一次放置的时候我们都要判断放置是不是合法,则个只需要通过一个简单的上左判断即可。程序如下:/*ID: chenanPROG: zoj 1008 Gn原创 2012-05-04 14:06:05 · 461 阅读 · 0 评论 -
USACO:Broken Necklace
http://ace.delos.com/usacoprob2?a=Y4t2tYgH7TP&S=beads这一题比较经典,虽然题意很简单就是从某个位置切断,然后向左右不断的搜索相同的珠子,但是解法却有很多,如单纯的暴力搜索,也有比较高效的解法,故而有必要好好对此题进行一个总结归纳。方法一:暴力搜索。这种方式下时间效率为O(n^2)。可以采用从某个点切断然后从这个点向两边扩展搜,由于是环形,原创 2012-04-19 13:54:12 · 392 阅读 · 0 评论 -
ZOJ 1002 Fire Net
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=2一道搜索的题目,数据量不是很大用深搜。判定一个点是不是能否放置碉堡,搜索其上方与左方是不是放置了碉堡。同时还要搜索该位置不放置碉堡(即使能放置)的情况。开始的时候没考虑到这一点,每次运行的结果总是0。考虑后,问题就解决了。程序如下;/*ID: csuchenanPRO原创 2012-05-04 15:12:27 · 449 阅读 · 0 评论 -
POJ 1753: Flip Game
http://poj.org/problem?id=1753题目意思很简单,和POJ1222题一样,前面在POJ1222的解题报告中已经将思路写的很清楚,这里不再赘述。这个题是找出最短的翻转步骤。同样也是遍历解空间。不过需要我们完全遍历,并且分为翻成全白和全黑两种这里都要计算。程序如下:/*ID: csuchenanPROG: POJ 1753 Flip GameLANG: C++原创 2012-04-25 16:36:30 · 408 阅读 · 0 评论 -
POJ 1222 : EXTENDED LIGHTS OUT
http://poj.org/problem?id=1222点灯问题,用遍历搜索空间的方法解。正如题目中所提到的几点,按下的顺序无关,每个灯最多只需按下一次。假设最终的按下位置为press矩阵,那么如果press矩阵是寻找的答案,那么按照press的第一行矩阵对灯进行操作之后,此时在矩阵的第一行中:如果位置(1,j)上的灯是亮的,则要按下位置(2,j),即press[2][j] 一定取1;原创 2012-04-25 15:45:22 · 385 阅读 · 0 评论 -
[NOIP1999]邮票面值设计
题目链接:http://www.rqnoj.cn/Problem_112.html题目题意很简单,想法也很简单,直接深搜加枚举,不过鉴于数据,得适当的优化下。在求解当一个数被加入的时候,要找出相应的产生的最大面值,开始的时候一直没思路,后来想到可以用动规来枚举,这样这个题目就OK了。用动规的时候求解对于给定的一个面值如何用最少的票凑出来,这样我们就可以很容易的计算出上限。如果直接枚举的话,状态原创 2012-04-07 00:03:48 · 1812 阅读 · 0 评论 -
POJ 2676 Sudoku
Sudoku回溯题目,求解一个可行解,类似于8皇后问题。规则很简单,也是类似于8皇后的规则。玩过数独就很容易理解题意了。给定一个没有填写完整的数独,找出一个可行解即可。标记每行每列以及3*3小矩阵的哪些数字已经被放过,每次放置前先检查是否合法(不出现重复数字),然后放置。#include#include#includeusing namespace std ;#defi原创 2012-07-11 12:43:00 · 383 阅读 · 0 评论