2013年10月13日

Multiple

摘要: poj1465:http://poj.org/problem?id=1465题意:给你一个数n(0~4999);以及m个不同十进制的数,问有这些十进制数组成的最小的n的倍数是多少。如果有则输出,没有就输出0;题解:此题用BFS 。。这个题好在 用 余数判重剪枝。。BFS 如果不加以剪枝,一定会搜索的情况会很庞大。所以应该用余数判重 。为什么可以用余数判重? A=a*N +e 即A%N =e B= b*N+e即B%N=e当A B mod N的余数相同时,如果先出现A 。在A 后加上一个数 i 时 , 新的数 C = 10 *a*N + 10 *e+i;同样 B后加上数 i 时 , D = 10* 阅读全文

posted @ 2013-10-13 11:10 天依蓝 阅读(332) 评论(0) 推荐(0) 编辑

Rescue

摘要: hdu1242:http://acm.hdu.edu.cn/showproblem.php?pid=1242题意:给你一个n*m的矩阵,代表n*m个方格,每个方格可能是a,你的目的地,r你的起点,x警卫,#墙壁‘。’道路。每次你只能走一步,上下左右,且每一步花费一分钟,如果有路可以直接走,如果是x就必须杀死他才能走,且杀死他也要花费一分钟,遇到墙壁就不能走问你从起点到终点,最短的时间,如果不能就输出那么一句话。题解:用bfs,广收。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace st... 阅读全文

posted @ 2013-10-13 11:07 天依蓝 阅读(216) 评论(0) 推荐(0) 编辑

Knight Moves

摘要: poj2243:http://poj.org/problem?id=2243题意:给定象棋棋盘上的两个位置a,b,计算马从a到b所需要的步数的最小值。题解:把整个棋盘看成一个二维的图,a,b相当于两个点,然后做bfs即可 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 struct Node{ 8 int x; 9 int y; 10 int step; 11 }; //记录当前节点的坐标以及到起点的步数 12 13 int map[9][9]; //记录地... 阅读全文

posted @ 2013-10-13 11:02 天依蓝 阅读(178) 评论(0) 推荐(0) 编辑

Basic Wall Maze

摘要: poj2935:http://poj.org/problem?id=2935题意:在6*6的格子中,有一些,如果两个格子之间有墙的话,就不能直接相通,问最少要经过几步才能从起点走到终点。并且输出路径。题解:直接bfs 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 struct Node{ 8 int sal; 9 char path[50]; 10 11 }; //用来记录当前节点的到起点的最小值以及取得这个最小值所对应的路径 12 int sx ,sy... 阅读全文

posted @ 2013-10-13 10:56 天依蓝 阅读(165) 评论(0) 推荐(0) 编辑

2013年10月12日

Labeling Balls

摘要: poj3687:http://poj.org/problem?id=3687题意:有N个重量1到N的点,把这N个点涂色,要求在一定的约束下颜色a必须比颜色b要轻,如果有多种选择则让重量最小的对应编号1,然后剩下中重量最小的给编号2,一次类推题解:逆向建图,这样取出来的就是最后选择的点,并标上最大重量,把邻接点入度为0的加入到优先队列中,然后取编号最大的,为的是使得留着编号最小的给重量最大的 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn = 202; 7 int ed... 阅读全文

posted @ 2013-10-12 14:45 天依蓝 阅读(201) 评论(0) 推荐(0) 编辑

2013年10月11日

Following Orders

摘要: uva124:http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=60题意: 第一行给出字符串(小写字母),表示出现的字符类型第二行是约束关系,a1 b1 a2 b2 a3 b3.....ai bi,表示ai必须在bi前面按照字典序输出所有满足约束条件的序列题解:题解:由题意会想到用拓扑排序,但是题目要求是字典序输出,所以可以用dfs来处理。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #inclu 阅读全文

posted @ 2013-10-11 18:04 天依蓝 阅读(266) 评论(0) 推荐(0) 编辑

2013年10月10日

Frame Stacking

摘要: poj1128:http://poj.org/problem?id=1128题意:一个二维图里面有几个相框(四条边的空心矩形框)。有重叠,求重叠顺序。还有题目保证至少存在一种符合要求的序列,当有多种情况时按字典序由小到大输出所有的情况。题解:建图然后+topsort+dfs ,建图很麻烦的,要细心处理。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include //stl迭代器 7 using namespace std; 8 char map[32][32];//记录原图 9 int g[27][... 阅读全文

posted @ 2013-10-10 18:43 天依蓝 阅读(174) 评论(0) 推荐(0) 编辑

Window Pains

摘要: poj2585:http://poj.org/problem?id=2585题解:如果i窗口挡在j窗口的前面,则在i,j之间建一条有向边,这样建图,建成有向图,然后就是判断是否有环,如果有环,就是否,否则就是yes。用一遍拓扑排序即可。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int map[5][5];//存储原来的图 7 int g[10][10];//储存窗口之间的边图 8 int counts[10];//记录每个点的入度 9 char str[30];10 //build是以... 阅读全文

posted @ 2013-10-10 08:48 天依蓝 阅读(218) 评论(0) 推荐(0) 编辑

2013年10月9日

Sort it all out

摘要: poj1094:http://poj.org/problem?id=1094题解(一位大神的分析)一、当输入的字母全部都在前n个大写字母范围内时:(1)最终的图 可以排序: 在输入结束前如果能得到最终的图(就是用这n个字母作为顶点,一个都不能少);而且最终得到的图 无环; 只有唯一一个 无前驱(即入度为0)的结点,但允许其子图有多个无前驱的结点。在这步输出排序后,不再对后续输入进行操作(2)输出矛盾:在输入结束前如果最终图的子图有环, 在这步输出矛盾后,不再对后续输入进行操作(3)输出无法确认排序:这种情况必须全部关系输入后才能确定,其中又有2种可能 ①最终图的字母一个不缺,但是有多个 无前驱 阅读全文

posted @ 2013-10-09 09:36 天依蓝 阅读(216) 评论(0) 推荐(0) 编辑

2013年10月8日

Ferry Loading||

摘要: uva10440:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1381题意:题意:一条船能够一次最多渡n辆车过河,过河用t min,回来又要用t min。m辆车按照一定的计划到达岸边。现在要求最少用多少时间就所有的船渡过河,以及用了最少多少次将所有。题解:用贪心思想,最早运到对岸的时间,取决于最后来的一辆车的被运送时间,因此最优解就是最后一辆车能够最早被运送。 1 #include 2 #inc 阅读全文

posted @ 2013-10-08 09:54 天依蓝 阅读(240) 评论(0) 推荐(0) 编辑

导航