摘要: 题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2107&cid=1186 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int map[101][110],vis[101],a[110]; 8 int n,m,k,j; 9 void dfs(int x)10 {11 int i;12 for(i=0; i>k>>m;31 for(i=0; i>u>>v;34 map[... 阅读全文
posted @ 2013-06-29 23:25 水门 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2142&cid=1186 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int vis[101]; 8 int n,m,k; 9 queueq;10 struct node11 {12 int u,v;13 struct node *next;14 }*head[110];15 void add(int u, int v)16 {17 struct no... 阅读全文
posted @ 2013-06-29 23:21 水门 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=3278题意:给定两个整数n和k通过 n+1或n-1 或n*2 这3种操作,使得n==k输出最少的操作次数 1 #include 2 #include 3 #include 4 using namespace std; 5 int vis[200001]; 6 struct node 7 { 8 int x,step; 9 };10 int bfs(int n,int k)11 {12 if(n==k)13 return 0;14 queueq;15 struct node next,pos;16 ... 阅读全文
posted @ 2013-06-29 23:18 水门 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2140&cid=1186 1 #include 2 #include 3 int d[15],map[15][15],vis[15]; 4 int main() 5 { 6 int i... 阅读全文
posted @ 2013-06-29 23:13 水门 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2137&cid=1184有关博客:http://blog.sina.com.cn/s/blog_7dc67d520100t26n.htmlhttp://www.cnblogs.com/shangyu/archive/2012/03/03/2378422.html以前做过,现在做还是不会…… 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 struct t... 阅读全文
posted @ 2013-06-29 12:30 水门 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 题目题解:http://blog.csdn.net/xu12110501127/article/details/9199335 有关博客:http://www.360doc.com/content/10/1118/16/963301_70454649.shtml 优先队列不错的博客。 priorit 阅读全文
posted @ 2013-06-28 21:00 水门 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2127&cid=1184哈夫曼树。 1 #include 2 #include 3 #include 4 int a[11000]; 5 6 int cmp(const void *a,const void *b) 7 { 8 return *(int *)a-*(int *)b; 9 }10 int main()11 {12 int n,i,sum=0,t,j;13 scanf("%d",&n);14 for(i=0; i<n; i++)15 阅读全文
posted @ 2013-06-28 20:48 水门 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=2524题意:问一个大学里学生的宗教,通过问一个学生可以知道另一个学生是不是跟他信仰同样的宗教。问学校里最多可能有多少个宗教。也就是给定一个图的点数和相应的边,问有多少个连通分量。 1 #include 2 #include 3 #include 4 5 using namespace std; 6 int bin[50010]; 7 8 int find(int a) 9 {10 if(bin[a]!=a)11 return bin[a]=find(bin[a]);12 };13 14 int main()15 {... 阅读全文
posted @ 2013-06-27 22:58 水门 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 用字典树没过,学习了一下map;参考博客:http://blog.csdn.net/zhengnanlee/article/details/8962432AC代码 1 #include 2 #include 3 #include 4 5 using namespace std; 6 int main() 7 { 8 int n,m,i; 9 while(cin>>n&&n)10 {11 cin>>m;12 mapmp;13 string name;14 for(i=0; i>name;17 ... 阅读全文
posted @ 2013-06-26 21:32 水门 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=2109题意:求一个整数k,使得k满足kn=p。思路:exp()用来计算以e为底的x次方值,即ex值,然后将结果返回。log是自然对数,就是e为底计算的。换底公式 log(b) = log(b) / log(a)。float 的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;double 的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308 1 #include 2 #include 3 int main() 4 { 5 double n,p; 6 ... 阅读全文
posted @ 2013-06-26 16:50 水门 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2449&cid=1181目前dfs 里的递归还是不很懂,AC代码如下: 1 #include 2 #include 3 int map[10][10],vis[10][10]; 4 int ans; 5 int m,n; 6 void dfs(int i,int j) 7 { 8 if(vis[i][j]||map[i][j]) return; 9 10 if(i==n&&j==m)11 {12 ans++;13 return;14 ... 阅读全文
posted @ 2013-06-24 22:59 水门 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 题目连接:http://poj.org/problem?id=2586题意:某公司要统计全年盈利状况,对于每一个月来说,如果盈利则盈利S,如果亏空则亏空D。公司每五个月进行一次统计,全年共统计8次(1-5、2-6、3-7、4-8、5-9、6-10、7-11、8-12),已知这8次统计的结果全部是亏空(盈利-亏空 2 int main() 3 { 4 int s,d,sum; 5 while(~scanf("%d%d",&s,&d)) 6 { 7 sum=0; 8 if(d>4*s) sum=10*s-2*d; 9 else... 阅读全文
posted @ 2013-06-24 22:55 水门 阅读(198) 评论(0) 推荐(0) 编辑
摘要: //题目:http://poj.org/problem?id=2965//题意:电冰箱有16个把手,每个把手两种状态(开‘-’或关‘+’),只有在所有把手都打开时,门才开,输入数据是个4*4的矩阵,因此考虑用位表示。可以改变任意一个把手的位置,但同时改变其所在的行和列。求最小步骤.//耗时 800MS1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 int id,vis[1q;28 int i;29 struct node cur,next;30 next.step=0; next.... 阅读全文
posted @ 2013-06-21 21:24 水门 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=1328题意:建立一个平面坐标,x轴上方是海洋,x轴下方是陆地。在海上有n个小岛,每个小岛看做一个点。然后在x轴上有雷达,雷达能覆盖的范围为d,问至少需要多少个雷达能监测到多有的小岛。思路:从左到右把每个小岛的放置雷达的区间求出,按结束点排序,从左至右看,当发现下一个区间的起始点大于前面所有区间的最小结束点的时候,答案加一。 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 struct node 8 { 9 double a,b;10... 阅读全文
posted @ 2013-06-21 20:06 水门 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=1753因为粗心错了好多次……,尤其是把1#include#includeusing namespace std;int id,vis[1q; int i; struct node pos,cur; if(id==0||id==65535) return 0; memset(vis,0,sizeof(vis)); pos.step=0; pos.x=id; q.push(pos); vis[id]=1; while(!q.empty()) { cur=q.f... 阅读全文
posted @ 2013-06-20 22:38 水门 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 参考博客:http://blog.csdn.net/acm_davidcn/article/details/5834454d[i][j]表示到第i行的所有的同一列的和,3个for循环,时间复杂度O(n^3),表示从第i行到第j行 求从第1列到第n列 连续的最大值。ac代码: 1 #include<stdio.h> 2 #include<string.h> 3 int d[110][110]; 4 int main() 5 { 6 int n,i,j,max,k,sum,t; 7 while(~scanf("%d",&n)) 8 { 9 mem 阅读全文
posted @ 2013-06-07 20:29 水门 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 这是做的第二道状态压缩dp题,又学习了…… 1 #include 2 #include 3 #define mo 10007 4 int dp[510][1>1; k=k>>1;22 }23 24 return 1;25 };26 27 int main()28 {29 int i,... 阅读全文
posted @ 2013-06-06 16:23 水门 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 看了好几回状态压缩dp了,也看 了不少博客,今天经过 贺贺的讲解对 位运算有了认识,参考了一下贺贺 的博客,终于做了第一道状态压缩dp题,还要努力( ⊙ o ⊙ )啊……状态压缩dp的一个很好的博客:http://blog.csdn.net/accry/article/details/6607703... 阅读全文
posted @ 2013-06-04 22:57 水门 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 位运算符:包括:1。&位与符 2。|位或符 3。^位异或符 4。~位取反符以操作数12为例。位运算符将数字12视为1100。位运算符将操作数视为位而不是数值。数值可以是任意进制的:十进制、八进制或十六进制。位运算符则将操作数转化为二进制,并相应地返回1或0。位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字。例如:表达式10&15表示(1010 & 1111),它将返回表示1010的值10。因为真真得真,或者是11得1,同位全是1结果也是1表达式10|15表示(1010 | 1111),它将返回表示1111的值15。假假得假。全零得零。表达式10 阅读全文
posted @ 2013-06-04 20:48 水门 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 大范围贪心,小范围背包#include<stdio.h>#include<string.h>long long d[2100];int max_num(int a,int b){ return a>b?a:b;};int main(){ long long i,j; long long m,w[10],p[10],v,n; double val,max; int id,x=1,t; scanf("%d",&t); while(t--) { max=0; for(i=1; i<=3; i++) { ... 阅读全文
posted @ 2013-06-01 17:32 水门 阅读(132) 评论(0) 推荐(0) 编辑