搜索
菜鸟起航
这个作者很懒,什么都没留下…
展开
-
hdu 1455 Sticks
把n根木棒接成m根长度相等,求最短的长度 dfs,要剪枝 排序,只选择不小于自身的木棒与之组合 #include #include #include int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } int n,a[65],vis[65],num,len; int dfs(int a原创 2013-04-12 11:45:56 · 499 阅读 · 0 评论 -
hdu 2181 哈密顿绕行世界问题
简单深搜 #include #include #include int map[21][3],b[22],st,num; bool vis[21]; int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } void dfs(int u,int step) { int原创 2013-04-22 09:43:14 · 603 阅读 · 0 评论 -
hdu 2579 Dating with girls(2)
广搜,, hash[x][y][step%k]记录x,y位置step%k这种情况走过没有 #include #include #include using namespace std; char map[110][110]; int n,m,k,hash[110][110][11]; int sx,sy,ex,ey; int dir[4][2]={0,1,原创 2013-05-04 20:13:08 · 814 阅读 · 0 评论 -
hdu 2102 A计划
搜索的题就是要细心 #include #include #include #define inf 0x3fffffff using namespace std; int vis[2][11][11]; char map[2][11][11]; int n,m,T; int dir[4][2]={0,1,1,0,0,-1,-1,0}; stru原创 2013-05-05 18:13:41 · 736 阅读 · 0 评论 -
hdu 2952 Counting Sheep
简单搜索 #include char map[110][110]; int n,m; int dir[4][2]={0,1,1,0,0,-1,-1,0}; int judge(int x,int y) { if(x>=0&&x=0&&y<m&&map[x][y]=='#') return 1; return 0; } void dfs(in原创 2013-05-05 22:06:18 · 683 阅读 · 0 评论 -
poj 3411
这题数据有问题,看了好多用spfa的代码下面的测试实例结果不一样都ac了 6 5 1 2 1 10 10 2 3 4 10 100 2 4 2 15 15 4 1 1 12 12 3 6 6 10 10 费用67 用dfs,控制每个点走的次数,控制三次就可以,数据水,两次就能ac #include #include #include in原创 2013-05-08 10:47:56 · 820 阅读 · 0 评论 -
hdu 1254
每次都要判断人能不能走到箱子的一边,然后推箱子 dp[i][j][k]记录从k方向推到i,j的最小格数 #include #include #include #define inf 0x3fffffff using namespace std; int dir[4][2]={0,1,1,0,0,-1,-1,0}; int map原创 2013-05-23 17:19:12 · 838 阅读 · 0 评论 -
hdu 2425
用vis数组标记到达当前位置的最小时间,如果比最小时间大则不加入队列 #include #include #include #define inf 0x3fffffff using namespace std; char map[30][30]; int n,m,sx,sy,ex,ey; int cost[4],vis[30][30]; int原创 2013-05-09 22:14:01 · 841 阅读 · 0 评论 -
hdu 3290 (简单dfs)
题意:没有儿子的节点所结苹果数是节点的编号,有儿子的所结苹果是儿子数量(k+1)/2个,求跟节点的苹果数 直接递归一下,先求出所有儿子的苹果树,在排序,,刚开始以为1就是根节点,根节点不确定,, #include #include #include const int N=20010; int w[N],vis[N],head[N],num,p[N]; struct e原创 2013-09-09 18:38:08 · 1216 阅读 · 0 评论 -
hdu 1518 Square
dfs要剪枝不然超时 剪枝:将木棒的长度排序,每个边的木棒都是从小到大,减去了每条边木棒不是升序的情况 搜索(1+7)了,(7+1)就不用了 #include #include int n,a[30],vis[30],L; int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } int dfs(i原创 2013-04-12 11:46:12 · 481 阅读 · 0 评论 -
hdu 3345 War Chess
广搜,要剪枝,不然Memory Limit Exceeded 走过的位置再走的话必须比以前剩的MV更多才会有更优的解 #include #include using namespace std; char map[110][110]; int a[4][2]={1,0,0,1,-1,0,0,-1}; int cont[110][110];//记录到这步剩余的MV int原创 2013-04-13 19:55:38 · 549 阅读 · 0 评论 -
hdu 2266 How Many Equations Can You Find
简单深搜 #include __int64 n,count; int a[15],num; char str[30]; void dfs(int op,__int64 sum) { if(op==num&&sum==n) { count++; } if(op==num)return ; __int64 k=0; for(int i=op;i<num;i原创 2013-04-23 22:51:58 · 615 阅读 · 0 评论 -
hdu 1175 连连看
#include #include using namespace std; #define N 1005 struct node { int x,y,gw,fx; }; int n,m,t,sx,sy,sz,ex,ey,ez,h,dir[4][2]={0,-1, 0,1, -1,0, 1,0}; int map[N][N]; char ev[N][N]; int judge(int x原创 2013-04-18 17:56:55 · 423 阅读 · 0 评论 -
hdu 1253 胜利大逃亡
广搜 #include #include using namespace std; #define N 55 struct node { int x,y,z,step; }; int n,m,t,h,dir[6][3]={-1,0,0, 1,0,0, 0,-1,0, 0,1,0, 0,0,-1, 0,0,1}; char map[N][N][N]; int judge原创 2013-04-18 23:03:14 · 534 阅读 · 0 评论 -
hdu 1728 逃离迷宫
广搜 #include "stdio.h" #include "string.h" #include using namespace std; struct team { int x,y,crow; }; char map[101][101]; int a[4][2]={1,0,-1,0,0,1,0,-1},flag[110][110]; int n,m,p,sx原创 2013-04-27 23:37:12 · 877 阅读 · 0 评论 -
hdu 1548 A strange lift
#include #include using namespace std; #define N 202 struct point { int x,step; }; int f[N],st,en,n,a[N]; int bfs() { memset(f,0,sizeof(f)); queueq; point cur,next; int x,y; cu原创 2013-04-27 23:46:14 · 584 阅读 · 0 评论 -
hdu 4801 长沙现场赛K题
题意:给出一个魔方的状态,求出在n次转动内最多可以成功多少个面。 思路:现场赛时,wx翻译完题目我们就知道是深搜,wx说只需要转三个面。复杂度就是(2*3)^7.当时我想着可以优化一下,一个面沿一个方向转一次后,就不要沿另一个方向转,复杂度降到6*5^6,不优化时间跑了500ms多,优化一下156ms,, #include #include int mian[6][4]原创 2013-12-02 00:45:59 · 1872 阅读 · 0 评论