深搜
zafkiel_nightmare
弱弱的程序员
展开
-
hdu 1501 Zipper
记录路径开二维数组就够了,开三维会超内存,开始直接把字符串传递进去直接删除字符,但是这样记录不了路径,会重复搜索导致超时,还是转化为下标处理吧 #include #include using namespace std; string a,b,c; int flag; int visit[201][201]; void dfs(int x,int y,int z) { visit[x][y]=原创 2015-04-11 22:51:18 · 405 阅读 · 0 评论 -
hdu 1027 Ignatius and the Princess II
题意:求出数字1-n的第m个全排列 1.调用函数 #include #include #define maxn 1000+5 using namespace std; int n,m; int ans[maxn]; int main() { while(cin>>n>>m) { for(int i=1;i<=n;i++) ans[i]=i; while(--m) { ne原创 2015-05-22 19:42:16 · 452 阅读 · 0 评论 -
hdu 1198 Farm Irrigation
这题可以dfs也可以并查集,感觉并查集比较简单就用并查集做了,题目的数据量是有误的,n,m应该远大于50; #include #define maxn 500+5 using namespace std; int n,m; int dir[11][4]={{1,0,1,0},{1,0,0,1},{0,1,1,0},{0,1,0,1},{1,1,0,0},{0,0,1,1}, {1,0,1原创 2015-05-22 20:06:17 · 492 阅读 · 0 评论 -
hdu 1455 hdu 1455 Sticks
思路还是很简单的,不过关键在于剪枝,用了几个不强力的剪枝,飘过~~~998ms #include #include #include #define maxn 65+5 using namespace std; int maxx,n,m,flag,l; int mapp[maxn]; int visit[maxn]; bool cmp(int x,int y) { return x>y;原创 2015-05-23 17:06:55 · 622 阅读 · 0 评论 -
hdu 1269 迷宫城堡
从一个点正向访问的所有的点,也能从这个点反向访问到所有的点,则yes,否则no; #include #include #include #define maxn 100000+5 using namespace std; int n,m; vectorzh[maxn]; vectorfa[maxn]; int visit[10000+5]; int sum1,sum2; void dfsz(in原创 2015-05-23 17:05:12 · 526 阅读 · 0 评论 -
hdu 2102 A计划
果然好久不刷题实力会退步啊,如此水的一道题都写了半小时。 #include #include #include #include using namespace std; int n,m,lim; struct stu { int x,y,z,t; }; char mapp[2][10][10]; int visit[2][10][10]; int dir[4][2]={{0,1},{0,-1原创 2015-08-23 20:05:40 · 445 阅读 · 0 评论 -
hdu 2545 树上战争
比起并查集,我更想把这题分类为深搜 #include #define maxn 100000+10 using namespace std; int f[maxn]; int dfs(int x) { int sum=0; while(x!=f[x]) { x=f[x]; sum++; } return sum; } int main() { cin.sync_with_st原创 2015-08-24 19:27:16 · 292 阅读 · 0 评论 -
hdu 2489 漫步校园
那个sb翻译的题目,真是醉了,dfs+bfs #include #include #include #define ll long long #define maxn 55 using namespace std; int n; int mapp[maxn][maxn]; ll dp[maxn][maxn]; int vaule[maxn][maxn]; int dir[4][2]={{0,1}原创 2015-08-26 17:19:17 · 402 阅读 · 0 评论 -
hdu 1142 A Walk Through the Forest
无聊的一题 #include #include #include #include #define maxn 1010 #define inf 1<<30 using namespace std; int n,m; vectormapp[maxn]; int vaule[maxn][maxn]; int d[maxn]; int dp[maxn]; void init() { for(int原创 2015-08-26 19:44:28 · 207 阅读 · 0 评论 -
hdu 5113 Black And White
很好的一道题,题意:给你一个N*M的图,然后给你K种颜色,每种颜色都必须使用相应的次数,让你给图上色,使相邻的格子的颜色不相同 这题让我明白了搜索策略的重要性,开使直接dfs给每种颜色匹配相应的格子,结果是无限tle,还没发剪纸。 这题的正确搜索姿势应该是给每个格子去匹配相应的颜色。然后再剪纸 虽然看起来差不多,但是这2种搜索方式的效率却很大 #include #include #incl原创 2015-09-10 00:25:20 · 315 阅读 · 0 评论 -
hdu 4403 A very hard Aoshu problem
题意:给定一个只有数字的字符串,在里面任意穿插一个等号和若干加号,使式子成立 首先2重循环预处理字符串,得到任意2个下标间的数字大小 再枚举等号未知 最后暴力搜索枚举加号位置 15ms过 #include #include #define maxn 20 using namespace std; string str; int n; int v[maxn][maxn]; int visi原创 2015-09-09 19:39:20 · 246 阅读 · 0 评论 -
hdu 1572 下沙小面的(2)
乍看是最短路,其实只要枚举全排列就可以了,无难度 #include #include #include #define maxn 35 using namespace std; int mapp[maxn][maxn]; int visit[maxn]; int pe[maxn]; int n,m; int main() { while(cin>>n&&n) { memset(visi原创 2015-09-12 15:02:44 · 298 阅读 · 0 评论 -
hdu 1298 T9
字典树+dfs,不想说些什么 #include #include using namespace std; int phone[8][4]={{0,1,2},{3,4,5},{6,7,8},{9,10,11}, {12,13,14},{15,16,17,18},{19,20,21},{22,23,24,25}}; int f[8]={3,3,3,3,3,4,3,4}; int n,m,原创 2015-09-11 23:02:34 · 330 阅读 · 0 评论 -
hdu 1978 How many ways
开始一看,唉,这题这么简单,分分钟写完,然后测试样例都过不了。。。。。。。 题意误导人啊!题意误导人啊!题意误导人啊! 并不是把能量全部用光才可以停下更新新的能量 只要在能量范围内可以任意停更新新的能量 这样才算另一种方法 记忆化搜索 #include #include #define maxn 105 using namespace std; int mapp[maxn][maxn]原创 2015-09-11 18:09:41 · 277 阅读 · 0 评论 -
hdu 5202 Rikka with string
秀恩爱的六花和裕太 此题数据量相当弱,因此dfs才能AC,若有极端数据是AC不了的 #include using namespace std; int l; string s; int flag; int judge(string x) { int sum=0; for(int i=0;i<x.size();i++) { if(x[i]!=x[x.size()-i-1]) sum原创 2015-11-09 23:38:21 · 334 阅读 · 0 评论 -
hdu 1983 Kaitou Kid - The Phantom Thief (2)
bfs+dfs很有意思也很好的一道题 然而我用了很久才ac #include #include #include using namespace std; char mapp[10][10]; int visit[10][10]; int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; int n,m,o; int sx,sy,ex,ey; int flag; s原创 2015-05-22 00:31:31 · 580 阅读 · 0 评论 -
hdu 1015 Safecracker
其实我认为搜索==暴力,只不过搜索是用比较特殊的方式来实现,所以听起来高大上一点,本质上和暴力是一个意思 不知道写这样闪瞎狗眼的代码会不会被人打~ #include #include #include using namespace std; int rem[30]; int main() { int target; string ans; while(cin>>target>>ans&原创 2015-04-28 20:36:31 · 473 阅读 · 0 评论 -
hdu 1224 Free DIY Tour
这题真是被弄的欲仙欲死啊,开始写的代码死活的a不掉,也不知道哪里错了,先附上,求大牛指点啊..... #include #include #include using namespace std; int n,m; int point[100+5]; int re; int ree[105]; int l; struct stu { int a,b; }; stu mapp[100000+5原创 2015-04-12 00:54:10 · 504 阅读 · 0 评论 -
hdu 1175 连连看
感觉这题挺水的,dfs 6000ms过 #include #include #define maxn 1000+5 using namespace std; int n,m; int mapp[maxn][maxn]; int visit[maxn][maxn]; int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; int sx,sy,ex,ey; int fl原创 2015-04-12 15:29:02 · 551 阅读 · 0 评论 -
hdu 1312 Red and Black
在学姐的帮助下总算的写出来了,感谢今夕学姐的教导 #include #include using namespace std; int n,m,sum; char mapp[21][21]={1}; int visit[21][21]; int dir[4][2]={{-1,0},{0,-1},{1,0},{0,1}}; void dfs(int x,int y) { //int xx=x,y原创 2015-03-21 13:38:02 · 228 阅读 · 0 评论 -
hdu 1010 Tempter of the Bone
搜索,关键在于减枝 #include #include #include using namespace std; int n,m,t,flag; char mapp[10][10]; int visit[10][10]; int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; void dfs(int x,int y,int num) { if(mapp[x][原创 2015-03-22 19:50:58 · 344 阅读 · 0 评论 -
hdu 1246 Sudoku Killer
pe无数次,也是醉了,开始一直觉得很难不敢做,后来才发现这是水题 #include using namespace std; int mapp[10][10]; int flag; int jduge(int x,int y,int num) { for(int i=0;i<10;i++) { if(mapp[x][i]==num&&i!=y){return 0;原创 2015-04-15 20:32:08 · 643 阅读 · 0 评论 -
hdu 1242 Rescue
深搜不解释,要注意公主的朋友不只一个,然后测试数据有多组 #include #include using namespace std; int n,m; int ax,ay; int re=1<<30; char mapp[200+5][200+5]; int visit[200+5][200+5]; int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; voi原创 2015-03-28 23:26:33 · 363 阅读 · 0 评论 -
hdu 1181 变形课
简单的深搜,没啥好说的 #include #include using namespace std; string a[100]; int b[100]={0}; int flag,t; void dfs(int x) { if(a[x][0]=='b') { flag=1;return; } b[x]=1; for(int i=0;i<=t-1;i++) { if(flag原创 2015-03-26 22:03:32 · 321 阅读 · 0 评论 -
hdu 2553 N皇后
由于皇后不能在同一行所以每行每列都必须有且仅有一个皇后,然后逐行搜索 看到学长的代码比我少一半,也是觉得自己弱爆了。 #include #include #include using namespace std; int n,sum=0; int mapp[11][11]; int visit[11]={0}; int jduge(int x,int y) { int flag=1;原创 2015-03-24 20:32:06 · 326 阅读 · 0 评论 -
hdu 1881 毕业bg
关键在与把题目读懂,然后是dp还是搜索就随意咯,最近刚学了搜索,所以我用搜索写的,把所有情况都遍历一遍,找出结果 #include #include using namespace std; int n,sum,re; struct stu { int h,l,t; }; stu num[35]; int vi[35]={0}; void dfs(int x,int t) { v原创 2015-03-24 20:27:39 · 402 阅读 · 0 评论 -
hdu 2181 哈密顿绕行世界问题
看起来很夸张,其实题目非常的水,测评数据也非常的水 #include #include using namespace std; int mapp[21][3]; int re[20+1]; int visit[20+1]; int casee; int m; void print(int l) { cout<<casee++<<": "; for(int i=0;i<l;i++) cou原创 2015-04-20 20:35:21 · 593 阅读 · 0 评论 -
hdu 2614 beat
这题最难得地方在于把题目看懂,简单的dfs,没什么好说的 #include #include #define maxn 15+1 using namespace std; int maxx; int mapp[maxn][maxn]; int visit[maxn]; int n; void dfs(int x,int time,int num) { for(int i=1;i<=n;i++)原创 2015-04-17 00:14:36 · 726 阅读 · 0 评论 -
hdu 1045 Fire Net
由于数据量比较小,所以呢.............暴力搜索! 把除去x的每个点都作为搜索的起始点,进去搜索。 搜索过程中,一个一个的去找没有被标记过且不为x的点,然后把这个点和前面所有的点进行比较判断,再dfs下去........... 看到学长只有50行的代码再次感觉自己弱爆了 #include using namespace std; char mapp[5][5]; int re,n原创 2015-03-25 20:34:38 · 247 阅读 · 0 评论 -
hdu 1584 蜘蛛牌
陷入了思维误区,以为要用数组下标来记录牌的位置,看了别人的代码才发现是要用数组的值来记录牌的位置,转过这道弯之后就是道水题了 #include #include #include #define maxn 10+2 using namespace std; int mapp[maxn],visit[maxn]; int re; void dfs(int t,int sum) { if(t==9原创 2015-04-20 19:23:44 · 653 阅读 · 0 评论 -
hdu 1016 Prime Ring Problem
dfs水题 #include #include #define maxn 20+5 #define pr 100000 using namespace std; int n; int visit[maxn]; int re[maxn]; int ans; int u[pr]={0}; void prime() { int i,j; u[0]=1,u[1]=1; for(i=2;i<pr;原创 2015-05-09 16:18:56 · 587 阅读 · 0 评论 -
hdu 1518 Square
关键在于优化剪枝 #include #include #include #include using namespace std; int mapp[20+5],visit[20+5]; int flag; int l,m; void dfs(int s,int x,int num) { visit[s]=1; if(x==l) num++,s=0,x=0; if(num==4) {原创 2015-04-07 23:31:42 · 541 阅读 · 0 评论