摘要:/*题意:有容量分别为Ca Cb 的A B两个壶 需要你通过几种操作使B壶中装有n容量的水有如下操作empty Aempty Bfill Afill Bpour A Bpour B A成功后输出success*/#include<iostream>#include<stdio.h>#include<cstring>#include<string>#include<vector>using namespace std;int vis[1001][1001];int ca,cb,n;vector <string> v;void
阅读全文
摘要:#include<iostream>#include<string>#include<cstring>#include<algorithm>using namespace std;string map[5];int ANS,n;int wall[5][5],mark[5][5];bool check(int x,int y){ for(int i=x-1;i>=0;i--) { if(mark[i][y])return 0; if(wall[i][y])break; } for(int j=y-1;j>=0;j--) { if(mar
阅读全文
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=311割点算法《算法与艺术信息学竞赛》P285建立在DFS的基础上#include<iostream>#include<cstring>#include<vector>#include<algorithm>#include<stdio.h>#include<string>#include<sstream>using namespace std;int n,m,k,ans,d[101],ances
阅读全文
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1050位运算+BFS^运算表示 翻转#include<iostream>#include<string>#include<queue>#include<cstring>using namespace std;int vis[(1<<16)+1],dir[5][2]={1,0,-1,0,0,1,0,-1,0,0};int ANS;struct node{ int step,key;};node fir;string m
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1072题目难点在于标记 状态vis[x][y][time] 表示在倒计时为time时走到了(x,y)处优先队列+BFS#include<iostream>#include<stdio.h>#include<queue>#include<cstring>using namespace std;int cas,n,m;int map[10][10],vis[10][10][7],dir[4][2]={1,0,-1,0,0,1,0,-1},ans;struct nod
阅读全文
摘要:DFS 题意:相邻的节点不能都涂成黑色,问是黑色节点最多的方案(只能选择黑和白)#include<iostream>#include<cstring>#include<stdio.h>using namespace std;int G[101][101],black[101],ANS[101];int n,m,ans;void DFS(int cur,int w)//cur当前要处理的节点,当前已有白色节点个数{ if(w>=n-ans)return;//白色节点多于最优情况下白色节点时 if(cur==n+1) { ans=n-w; for(int
阅读全文
摘要:求输出所有 含h个1的且长度为n的01串可重集全排列 集合为{1,0} #include<iostream>#include<stdio.h>using namespace std;int cas,n,h;int tmp[17];void DFS(int cur,int num){ if(num>h)return; if(cur==n) { if(num==h) { for(int i=0;i<n;i++) printf("%d",tmp[i]); printf("\n"); } return; } for(int i
阅读全文
摘要:http://acm.zjut.edu.cn/ShowProblem.aspx?ShowID=1624这是去年校赛得题目,作为当时的fresh man我们水水地硬是人工枚举把答案暴力出来了,今天回过头来写,感觉大不一样了!一道简单的DFS#include<iostream>using namespace std;int n,num;void dfs(int k,int tmp,int last,int c)//k表示接下来要在k与k+1中间进行处理,tmp当前获得值,last表示最后一次加上或减去的数,c表示最后一次进行的运算 ,1表示‘+’,0表示‘-’ { if(n==k){i
阅读全文
摘要:思路:下面写的算清楚了,其实这道题就是对移动牌的先后顺序进行枚举(全排列,当然要剪枝),然后对于每张牌移动的位置进行寻找在别的地方 还看到了DP的做法 还有二分的思想Problem : 1584 ( 蜘蛛牌 ) Judge Status : AcceptedRunId : 3716782 Language : C++ Author : zjut11018Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta#include<iostream>#include<cmath>#inclu
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1426Problem : 1426 ( Sudoku Killer ) Judge Status : AcceptedRunId : 3712414 Language : C++ Author : zjut11018Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta借助此题学习DFS思路:把需要填数的位置保存到q中,再递归求解#include<iostream>using namespace std;int
阅读全文
摘要:/*依旧献给刻苦学习的班长同学!!~这题和勘探油田本质上是一样的,求给定的一个点的连通区域的格子数下面是非递归写法*/Problem : 1312 ( Red and Black ) Judge Status : AcceptedRunId : 3709667Language : C++Author : zjut11018Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta#include<iostream>#include<cstring>#include<queue>
阅读全文
摘要:非递归# include<iostream># include<string>using namespace std;string map[100];int mark[100][100];struct oil{ int x; int y;};int dir[8][2]={0,-1,0,1,-1,0,1,0,1,1,1,-1,-1,1,-1,-1};oil arr[10000];int main(){int m,n;int x,y,a,b; while(cin>>m>>n&&m) { for(int k=0;k<m;k++)
阅读全文
摘要:View Code Problem : 1240 ( Asteroids! ) Judge Status : Accepted又是一道常规BFS#include<iostream>#include<string>#include<queue>using namespace std;string map[10][10],ss,end;int vis[10][10][10],dir[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};int n,ok,ans;struct node{ int x
阅读全文
摘要:View Code http://acm.hdu.edu.cn/showproblem.php?pid=1429 1 Problem : 1429 ( 胜利大逃亡(续) ) Judge Status : Accepted 2 状态压缩+BFS 3 用二进制表示第i把钥匙的有无 比如已有第三把和第一把钥匙,则二进制表示为0000000101即整数5,用|添加钥匙 (如67行),用&判断有无某把钥匙(如53行) 4 #include<iostream> 5 #include<stdio.h> 6 #include<string> 7 #include&l
阅读全文
摘要:http://acm.hdu.edu.cn/problemclass.php?id=268View Code Problem : 1253 ( 胜利大逃亡 ) Judge Status : Accepted自我感觉BFS难度1可以告一段落了。思路:这题和一般的BFS的做法是一样的m[k][i][j]=1表示第k块第i行第j列是墙,#include<iostream>#include<stdio.h>#include<queue>#include<algorithm>using namespace std;int m[51][51][51],vis
阅读全文
摘要:Problem : 1198 ( Farm Irrigation ) Judge Status : Accepted其实这道题勘探油田的变形,只是判断两个格子是否连通的规则有所变化。原先我用了一个三维数组G[i][j][k]=1来表示当图j在图i的k反向时两图连通,可是这样表示很麻烦要11幅图与11幅图一一进行对比而且容易出错,后来改用了下面check里的方法,简化了很多。G[i][k]表示第i幅图有水管的走向为k方向,如果与它相邻的G[j][(k+2)%4]=1,则两图连通#include<iostream>#include<string>#include<al
阅读全文
摘要:Problem : 1016 ( Prime Ring Problem ) Judge Status : AcceptedRunId : 3644950 Language : C++ Author : zjut11018回溯法(同八皇后问题)DFS#include<stdio.h>#include<algorithm>usingnamespace std;int vis[41],pri[21],c[21],n;void dfs(int cur){if(cur==n){if(!pri[c[cur-1]+1])//注意判断首尾相加是否是素数{for(int i=0;i<
阅读全文
摘要:Problem : 1104 ( Remainder ) Judge Status : AcceptedCode Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta#include<stdio.h>#include<iostream>#include<string>#include<cstring>#include<queue>using namespace std;struct cc{ int n,m;};string op[1005];int ste
阅读全文