搜索
hadis_fukan
这个作者很懒,什么都没留下…
展开
-
poj 3278 Catch That Cow
题目链接:点击打开链接比赛的时候wa了十次。。。。因为那个网速太坑爹,我对BFS搜索的题注意点也不是很熟悉。。。。每次只知道没过,看不到提交结果。。。凭着感觉改终于改对了。。。注意点:1、写那个能不能走的判断条件时要把 越界的条件 写在 是否访问判断的前面,利用&& 如果前面不成立,后面就不判断的性质。这样才不会下标越界,出现RE。2原创 2013-12-09 18:50:37 · 756 阅读 · 0 评论 -
hdu 4284 Travel (dfs+floyd预处理)
题意:有n个城市m条路。从1出发回到1,要访问选定的几个城市,这几个城市可以打工,但是打工需要用di买执照,打工可以挣ci。问能不能访问所有选定的城市并且拿到所有执照。分析:1、先用floyd预处理出任意两点之间的最短距离,然后dfs搜。2、要注意的是判断重边,n=2*n。#include#include#include#define INF 100000原创 2014-02-02 17:38:21 · 990 阅读 · 0 评论 -
hdu 3681 Prison Break (状态压缩dp/dfs + bfs)
题意:一幅矩阵迷宫,給起点,开始时充满电,要求是遍历给定的点,每移动一次花费1,迷宫中有若干充电池可充满电(每个充电池只能用一次),求原始电量最少是多少。分析:1、由于所有'Y'处一定要走到,‘G'可以走也可以不走,且他们的总个数最多只有15个。the sum of energy pools and power switches is less than 15.因此原创 2014-02-06 16:21:11 · 1185 阅读 · 0 评论 -
hdu 1181 变形课 (dfs- -)
题意:是中文。。就不说了。。算法:比赛的时候 我用dfs没有标记用过的,结果爆栈5次(好像有那么多次。。。)#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;char str[102];原创 2014-03-03 08:43:16 · 1077 阅读 · 3 评论 -
hdu 1399 Starship Hakodate-maru (爆搜- -也能算枚举)
题意就是 找能表示成i*i*i+j*(j+1)*(j+2)/6形式且小于等于n的最大值。算法:枚举j或者i。两个for循环。关键是找枚举的范围和尽量缩小枚举的范围。注意枚举立方数的时候,可以只枚举0到(int)pow(n,1.0/3)之间的数。或者也可以预处理。比赛的时候想复杂了。而且看到 The input is a sequence of at mo原创 2014-03-03 13:55:10 · 1123 阅读 · 0 评论 -
武大邀请赛网络赛 I Twenty-four
链接:点击打开链接题意:有8张牌,值分别为1,1,2,2, 3,3, 4, 4取四张牌可以玩24点游戏的选法数。24点只能用+、-、*连接。算法:for循环枚举四张牌枚举四张牌的运算顺序再枚举符号dfs爆搜到结果直接提交。好遗憾啊。。。小攀攀人肉搜索,提交了11、12,就是不交13。。。。#include#inc原创 2014-03-31 08:13:55 · 765 阅读 · 0 评论 -
poj 3126 Prime Path (bfs+筛素数)
啦啦啦~~~~~我就是来水博客的。。。#include#include#include#includeusing namespace std;int p[10005];bool f[10005];int d[5],a,b;bool vis[10005];struct node{ int v,step;}e[1005];void init(){原创 2014-03-21 19:36:12 · 839 阅读 · 0 评论 -
hdu 1180 诡异的楼梯(bfs+最短路+dp)
题意:给定一个n*m的地图,给定了起点S和终点T。某些格子上有障碍,有些格子上有楼梯。有障碍的格子不能走,有楼梯的格子只有楼梯的方向跟行进方向相同时才能走。楼梯每分钟变换一次方向(横向或竖向)。每走一步花费1分钟,走楼梯的话可以直接走到楼梯对面,也是花费一分钟。没有两个相邻的楼梯,人不能在楼梯上停留。求需花费的最小时间。原创 2014-04-03 16:05:15 · 1069 阅读 · 0 评论 -
hdu 4876 ZCC loves cards (搜索+剪枝)
题意:从n个数中选k个数按照任意顺序weiche原创 2014-07-27 10:49:53 · 545 阅读 · 0 评论 -
poj 3635 Full Tank? ( 图上dp )
题意:已知每个点的加油站的油价单价(即点权),每条路的长度(边权)。有q个询问,每个询问包括起点s、终点e和油箱容量。问从起点走到终点的最小花费。如果不可达输出impossible,否则输出最小的旅途费用。算法:其实要分析状态= =感觉就像是dp。最直接的想法是 每到一个点都加上要走到下一个点所需要的油量。但是走的路不同,到底怎么处理加多少的问题呢?因原创 2014-07-10 23:20:22 · 1182 阅读 · 0 评论 -
UESTC 889 Battle for Silver (dfs)
题意:给一个图,每个点有点权,每两个点最多有一条边相连,每个点至少和一个点通过边相连。要找出这样一个团,使得团内所有的点两两都有边相连且边不交叉,并且点权最大。算法:由于两两连边且边不能交叉,可知最多有4个点。所以暴搜~dfs出4个位置放什么元素,一边判断放的点与前面的点是否是两两连边,一边更新ans。开始一直当做3个点和4个点在写,忘了考虑1个点和2个点。原创 2014-08-27 10:50:59 · 815 阅读 · 0 评论 -
hdu 5025 Saving Tang Monk (bfs+状态压缩)
题意巴拉巴拉我现在不想写~~终于过了。。。手好生m原创 2014-09-22 22:41:22 · 436 阅读 · 0 评论 -
hdu 1010 Tempter of the Bone (dfs+奇偶剪枝)
题意:判断是否能恰好在Ts时走到原创 2014-09-23 15:31:33 · 547 阅读 · 0 评论 -
hdu 1045 Fire Net (dfs)
题意:X表示墙咯,表示空地咯,原创 2014-09-27 08:49:38 · 444 阅读 · 0 评论 -
POJ 3009 Curling 2.0 (DFS)
题目链接:这里哈哈~#include#include#includeusing namespace std;int sx,sy,ex,ey,h,w;int mp[30][30];int minn(int x,int y){ return x<y?x:y;}int dfs(int x,int y,int step){ if(step>10)原创 2014-02-02 10:52:00 · 1117 阅读 · 0 评论 -
ural 1500 Pass Licenses (dfs+bit)
题意:有n个十字路口(就是路的端点啦)、m条路、k中驾照,每一条路可属于若干种驾照(拥有相应的驾照才能在这条路上通行)求从编号为0的十字路口走到编号为1的十字路口,最少要有多少种驾照。因为驾照数很少,可以用位来模拟相应的驾照。然后枚举得到既能从0到1又最少的需求。e[i][j]中为1的位代表这条路属于该驾照。照着小伙伴的思路自己敲了一遍。。。。感原创 2014-01-10 20:12:21 · 909 阅读 · 0 评论 -
poj 1011 Sticks -----dfs+剪枝
题目链接:点击打开链接比赛的时候老是想搜索加构造长度,以分的份数来搜,由于构成相等长度的长木棍不一定是相等的份数,自然思路混乱,想不出来。如果是以长度来分就好办了。先将所有的木棍降序排列。1、首先 要求的能拼成的长木棍的最小长度len 一定是 大于等于a[0],小于所有木棍的 总长度s的。并且len一定能整除sum。2、剪枝:原创 2013-12-10 08:25:03 · 1096 阅读 · 0 评论 -
poj 3669 Meteor Shower (bfs)
题目链接:点击打开链接题意:M个陨石会在某个时间砸向地图某点,摧毁该点及其上下左右总共五个格子,也就是在这个时间以后这些格子就不能通过了,问主人公从(0,0)开始最少需要多少时间能到达安全的地方(也就是一直不会被摧毁的地方)先初始化所以格子的崩塌时间为INF(无限大),然后预处理出所有的时间。再BFS,如果没越界、没访问过而且 到达这点的时间将这原创 2013-12-10 13:06:39 · 1460 阅读 · 0 评论 -
poj 2718 Smallest Difference
题目链接:点击打开链接题意:有一列数,对其任意分成两组,每组按一定顺序可以组成一个数。 问得到的两个数的差最小是多少。要想两个数的差最小,就是对半分,暴力比较求最小值。关键就是用next_permutation()函数求这列数的全排列,排除前导零的情况。#include#include#include#include#def原创 2013-12-12 23:58:23 · 2663 阅读 · 0 评论 -
poj 2918 Tudoku
数独。题目链接:点击打开链接#include#include#include#includeusing namespace std;char mp[10][10];bool mk[10][10];vector h[10];vector s[10];void solve(){ for(int i=1;i<=9;i++) { fo原创 2013-12-21 21:12:18 · 1183 阅读 · 0 评论 -
hdu 2337 Escape from Enemy Territory (二分枚举+预处理+bfs)
题意:要从起点走到终点,但是路径要离敌军尽可能的远。输出路径中离敌军最近的距离和路径长度。思路:先用BFS预处理限定区域内每个点到每一个敌军军营的距离,同时得到一个最大的距离范围maxdis。然后在0-maxdis之间二分枚举,bfs找能从起点到终点且尽可能远的路径。总结:1、queue q 如果做为全局变量每次用都要注意清空。2、不需要ans找最小值,原创 2014-01-07 14:23:44 · 1336 阅读 · 0 评论 -
POJ 1071 && ZOJ 1019 Illusive Chase (dfs)
题意:给你 一个矩阵,那个矩阵里面 0 表示空地,1表示障碍物。 然后就是a,b,dir。就是说第x步可以朝这个方向走a-b步。如果所有的步子都能走完且在这个工程中不出界也不碰到障碍物,就计数+1。求有多少条这样的可行路径。总结:1、move函数要传引用,这样能边判断能不能走边改变坐标。2、walk函数相当于是个dfs函数啦。。。,但是由于起始点不能是1表示的障碍物处,原创 2014-01-07 20:49:55 · 1457 阅读 · 0 评论 -
poj 2676 Sudoku
关键是要找出怎么通过横纵坐标判断是哪一个子块。只要推出了公式: k =3* ((i-1)/3)+(j-1)/3+1 i、j、k分别为行、列、块编号,从1开始。如果从0开始就是k=3*(i/3)+j/3 然后就是dfs的一般写法,如果能放继续搜下一个位置,如果不能就回溯,把标记改回来。数据比上一个数独 poj 2918要强。。因为不能直接用那个提交啊,会TLE原创 2014-01-08 13:12:45 · 779 阅读 · 0 评论 -
poj 3187 Backward Digit Sums
题意:给出N和sum。sum是由1-n的任意排列,相邻两个相加,依次循环每次减少一个数得到的 结果。现在要根据sum来找开始的这个排列。分析:杨辉三角+暴力。#include#includeusing namespace std;int t[15][15];int a[15];void init(){ for(int i=原创 2014-01-08 18:11:40 · 944 阅读 · 0 评论 -
ZOJ 1148 The Game (BFS)
题意:有一个BOARD上有很多很多相同大小的卡片。有的位置是空的,有的位置放了卡片。 问卡片a和卡片b能不能用横纵直线段连起来,如果能求连线最少由多少段组成,连线 可以暂时离开BOARD。思路:1、刚开始看真的很像连连看,但是连连看只能转两次。这个允许转多次。只是要尽可能少转弯。 怎么保证少转弯呢,尽可能总是沿着当前方向原创 2014-01-08 15:33:16 · 1242 阅读 · 0 评论 -
hdu 1067 && poj 2046 Gap (bfs+hash)
题意:初始状态为左边空一行,然后数字在右边28个格子。末态要求按一副卡片在一行顺序排, 即第一行为11-17,第二行21-27,。。。。 可以通过四个空格来转移卡片,问从初始状态到末态最少要多少步。思路:1、状态太多了,需要用hash记录状态。2、bfshash函数的设计:【1】 h += (t[i][j]*b原创 2014-01-08 10:34:00 · 1105 阅读 · 0 评论 -
zoj 1091 && hdu 1372 Knight Moves
题意:给定起点和终点,求最少需几步完成。(bfs)总结:queue q;在函数外,每次用都要记得清空。#include#include#include#includeusing namespace std;int dx[]={-1,-2,-2,-1,1,2,2,1};int dy[]={-2,-1,1,2,2,1,-1,-2};bool vis[10][10原创 2014-01-08 22:49:10 · 730 阅读 · 0 评论 -
poj 3134 Power Calculus (IDA*)
题意:求由X得到X^n的最少步数。分析:迭代加深搜索。剪枝:1、如果大于当前限制的深度,停止搜索。 2、如果当前的数通过自身相乘(即指数相加 最快方式)都不能达到n,停止搜索。感想:写到后来越来越像什么用dfs搜索某个集合的幂集中有多少元素,取和不取某个数,然后继续搜。。真的很像啊。。。虽然我每次都写不好DFS。。。#inc原创 2014-01-08 21:24:50 · 1315 阅读 · 0 评论 -
hdu 1258 Sum It Up (dfs)
Sum It UpTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4057 Accepted Submission(s): 2086Problem DescriptionGiven a specifie原创 2014-09-28 07:41:28 · 521 阅读 · 0 评论