搜索
ConwayTian
一切再来,为时未晚。
毁掉你人生的,其实是你内心的平庸,是你失去追求卓越的那个瞬间。
展开
-
POJ 3278 Catch That Cow BFS
题意:John的奶牛丢失了,现在有人告诉他奶牛的位置为e, 而他自己的位置为s,e与s在同一条直线上。现在John去追赶他的奶牛,他又两种方式可以选择。1. 在任意位置 x 可以走到 x-1 或者 x + 1, 耗时一分钟2. 在任意位置 x 可以走到 x * 2, 耗时原创 2011-09-08 11:17:00 · 385 阅读 · 0 评论 -
POJ 1691 Painting A Board (DFS/状态DP)
题意:给定一个矩形块,它里面包含了n个小矩形块,现在要求将每个小矩形块涂上给定的颜色。涂色过程中,小矩形必须是整块整块的涂,并且只有当某个矩形上面的所有矩形都被涂色之后它才能被涂色。假如每只笔只能涂一种颜色,问至少需要换多少次笔。(第一次拿起笔也算一次)。题解:给小矩形块编号原创 2011-10-03 13:48:48 · 1778 阅读 · 0 评论 -
POJ 3984 迷宫问题 (BFS,水题)
题意:int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的原创 2011-10-09 19:42:40 · 5619 阅读 · 1 评论 -
POJ 1321 棋盘问题 DFS
题意:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。题解:#include using namespace std;#define N 10bool col[N];char map[N][N];int n, k,原创 2011-09-08 12:53:42 · 510 阅读 · 0 评论 -
POJ 1054 The Troublesome Frog 搜索+剪枝
题意:稻田里的青蛙沿直线跳跃,每一只青蛙的跳长一定,现在发现稻田里有许多青蛙跳过的痕迹,根据这些痕迹求跳跃次数最多的那一条路线。题解:注意题目的要求,首先要保证青蛙能从边界跳到所求路径的的开始位置,然后跳跃次数少于3的不算。一条直线上的点可以是不同青蛙跳跃的痕迹。先排序,然后枚举开始的两个点,其实也就相当于枚举斜率,然后计算每一条斜率上最多的跳跃次数。#include #inc原创 2011-08-29 11:07:18 · 977 阅读 · 0 评论 -
POJ 2676 Sudoku dfs
题意:九宫格游戏。给定一个九宫格,他的每一行每一列以及每一个3*3的子格都必须由1,2,3,4,5,6,7,8,9组成。不能多也不能少。求出一种满足条件的填充方案。题解:貌似正搜得效率比反搜差不少。不过没关系,道理理解可就ok了。#include using namespace std;#define N 11char str[N];int map[N][N];bo原创 2011-09-08 01:34:24 · 658 阅读 · 0 评论 -
POJ 2965 The Pilots Brothers' refrigerator BFS+位运算
题意:冰箱有16个开关,按4*4的矩阵排列。每改变一个开关的状态,与它同行同列的所有开关也要全部改变状态。求出打开冰箱所需要的最少调整次数。题解:DFS应该也可以。#include #include using namespace std;queue que;int step[1<<16];int point[1<<16];int cell[] = { 43原创 2011-09-09 13:27:36 · 546 阅读 · 0 评论 -
POJ 1724 ROADS (有限制的最短路径DFS/BFS)
题意:有n座城市,城市之间有道路,道路需要收费,现在Bob想从城市1去城市n,但是他所拥有的钱是有限制的。现在问Bob能否在有限的钱之内到达n城,若能则输出最短路径。题解:一开始用vector建图,果断TLE··。可能是从尾部添加邻接点的原因吧。#include #include using namespace std;#define N 10005#define原创 2011-10-03 00:40:01 · 1066 阅读 · 0 评论 -
POJ 1599 Station Balance (分配问题,搜索)
题意:给你C个小组(C=S)。要将这S个数值分配给C个小组,每小组最多分配两个数值。求最优的分配方式,使得下面 IMBALANCE 的值最小。其中AM = 所有数值之和 / C; CMi = 第i小组的数值之和;#include#include#include#include#includeusing namespace std;int C, S;double im原创 2012-07-26 16:44:05 · 920 阅读 · 0 评论 -
ZOJ 1002 回溯
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=2#include#include#includeusing namespace std;int a[5][5], w[5][5];int n, ans;bool check(int r, int c){ int i; if(w[原创 2013-03-28 19:35:31 · 998 阅读 · 0 评论 -
ZOJ 1003 Crashing Balloon 搜索
题意:100个气球,气球上标有1-100的号码,每踩一个气球,则自己的得分可以乘以该气球的标号(初始得分为1,每个气球只能踩一次)。题解:假如a>b,求出a,b所有可能的分解情况(分解为1-100的数的乘积)。然后比对,只要存在一种分解情况,使得a的因子中不含b的因子,a就是可能的。#include#include#include#includeusing namespace原创 2013-04-15 21:29:03 · 2867 阅读 · 1 评论 -
POJ 3411 Paid Roads (DFS多次访问节点)
题意:n座城市由m条公路连接,每两座城市间可能有多条公路。这些公路都是需要收费的,并且有两种付费方式。例如从a到b:方式一在b处付费 r ;方式二在a之前(可能包含a)付费p,但是用方式二付费要求路径必须经过c点。要求从1到n得最小费用。题解:题目只要求最小费用,由于有重边的原创 2011-10-02 00:42:18 · 2192 阅读 · 0 评论 -
POJ 3140 Contestants Division (DFS)
题意:给定一棵无根树,每个节点有一个值, 你可以在任意两节点间划一下,使得分开的两棵子树的值的差最小。题解:若所有节点的值的总和为奇数,那么任意划一下一定得一奇一偶的两棵子树,值之差一定是奇数且>=1。若总值为偶数,那么值之差一定为偶数且>=0。#include #in原创 2011-09-26 20:26:08 · 843 阅读 · 0 评论 -
POJ 2251 Dungeon Master DFS
题意:一个三维的地牢 'S' 表示其实, ‘E' 表示出口。’.' 表示可行, ‘#' 表示不可行。题解:#include #include using namespace std;char maze[31][31][31];bool check[31][31]原创 2011-09-08 11:26:39 · 691 阅读 · 0 评论 -
POJ 1129 Channel Allocation dfs(四色定理)
题意:在广播时,相邻的中继器会互相干扰,为了避免干扰,可以让中继器使用不同的通道。现在给出n个中继器,以及分别与它们相邻的中继器。求最少需要的通道数。题解:给出两组代码,第二组用到了四色定理。四色定理(Four color theorem)最先是由一位叫古德里(Fra原创 2011-09-07 01:37:56 · 1223 阅读 · 0 评论 -
POJ 2531 Network Saboteur 随机化算法/dfs
题意:在一个网络中有n个节点,现在需要把n个节点分成两部分,每部分之间的通信代价为0,不同部分之间的通信代价为Cij。求一种划分方式,是的总得代价最大。题解:dfs, 随机化算法都可以。下面给出了两种dfs的实现方法。方法一:dfs#include usin原创 2011-09-07 00:58:14 · 958 阅读 · 0 评论 -
POJ 3126 Prime Path BFS
题意:给定两个素数 a, b (均为四位数),要求将素数 a 修改成素数 b,每次只能修改一个位置上的数字,且中间的每一步得到的数字也必须是素数。求最少需要的步骤数。若不能将 a 按规定要求换成 b,则输出Impossible.题解:给出两组代码。#include原创 2011-09-08 10:40:19 · 494 阅读 · 0 评论 -
POJ 3414 Pots BFS
题意:给你两个罐子,你可以执行以下操作:1. FILL(i) 将罐子 i 装满水2. DROP(i) 将罐子 i 中的水倒掉3. POUR(i,j) 将罐子 i 中的水倒入罐子 j 中,若 i 中的容量大于 j 中的容量, 那么 i 中原创 2011-09-08 09:52:34 · 393 阅读 · 0 评论 -
POJ 3009 Curling 2.0 DFS
题意:冰球游戏,和迷宫类似,但是每一次碰到障碍则在障碍的旁边停下来,并且障碍被击碎。此时可以重新值掷一次冰球。当掷球次数超过10次则输出-1.题解:#include using namespace std;#define INF 100000000int map[2原创 2011-09-08 13:20:01 · 1011 阅读 · 0 评论 -
POJ 2488 A Knight's Journey DFS
题意:给出一个国际象棋的棋盘(行为字母,列为数字,如:A1)。判断骑士(类似于马)能否不重复的走遍棋盘上的每一个点。若有多种方式,输出字典序最小的。题解:#include using namespace std;bool check[30][30];int p,原创 2011-09-08 22:45:52 · 491 阅读 · 0 评论 -
POJ 3026 Borg Maze BFS+Prim
题意:给定一个迷宫,在一个迷宫内,建立一颗最小生成树连接所有点。(这些点即‘A’或‘S’)题解:通过BFS找到'S'与每个’A'之间的最短路径。然后prim 建立最小生成树。#include #include #include using namespace st原创 2011-09-08 23:45:09 · 661 阅读 · 0 评论 -
POJ 3083 Children of the Candy Corn dfs+bfs
题意:给出一个迷宫,不超过40*40。分别求出从起点一直沿左走,一直沿右走,直到终点所需要的步数。以及所需要的最小步数。题解:用bfs求出最小步数,dfs求一直向左或者向右走得步数。#include #include using namespace std;c原创 2011-09-08 22:21:05 · 1254 阅读 · 0 评论 -
POJ 1753 Flip Game BFS/DFS
题意:给定一个4*4的棋盘。棋盘上每个格子有黑白两种状态。每修改一个格子的状态,那么它上下左右的格子也随之被修改。目标是让所有格子都变成黑或者所有格子都变成白。问至少需要修改几次才能实现目标。题解:给出了DFS,BFS两种解法。DFS:#include using原创 2011-09-09 18:32:43 · 859 阅读 · 0 评论 -
ZOJ 1005 Jugs
题意:两个罐子倒水题解:#include#include#includeusing namespace std;int a, b, n;bool vis[1010][1010], flag;int res[10100], step;void print(){ for(int i = 0; i < step; i++) { switch原创 2013-04-16 19:54:46 · 2005 阅读 · 0 评论