2011年7月25日
摘要: 题目:http://poj.org/problem?id=2584代码:View Code 1 #include<stdio.h> 2 #include<string.h> 3 int n,m,mark[201],num[201],start[201],end[201]; 4 bool map[201][201],visit[201]; 5 6 7 void get_map() 8 { 9 int i,j,k;10 char s[12];11 scanf("%d",&n);12 for(i=0;i<n;i++)13 {14 scanf( 阅读全文
posted @ 2011-07-25 22:18 渲染独白 阅读(184) 评论(1) 推荐(0)
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1507题目有指出 ( (N x M) - K <= 50), 所以最多也就 50 个点. 然后遍历图上每一个可行点点, 把它和他 上下左右的可行点连边, 最后就得到了一个二分图, 然后直接最大匹配, 不过结果有问题, 分析不透彻, 出现了重边. 再 分析下, 因为相邻块之间的下标和存在奇偶关系, 所以只取 偶数 或 奇数点 建图就行了.View Code 1 #include<stdio.h> 2 #include<string.h> 3 4 #define maxn 11 阅读全文
posted @ 2011-07-25 15:29 渲染独白 阅读(262) 评论(0) 推荐(0)
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1498这题想了很久都没想到,看了下别人的分析,才恍然大悟,其实就是一个棋盘问题。用最少的棋子去覆盖整个棋盘。而这里是通过行列来覆盖,和车的走位一样,所以只要求每种颜色的匹配数,如果大于k就说明不能全部踩破。方法一:将颜色从1——max枚举。代码:View Code #include<stdio.h>#include<string.h>int n,color[101][101],mark[101],ans[51];bool map[101][101],visit[101];void 阅读全文
posted @ 2011-07-25 09:59 渲染独白 阅读(197) 评论(0) 推荐(0)
摘要: 题目:http://poj.org/problem?id=2236方法一:修好的电脑用k[i]=1标记,没有修好的用k[i]=0标记,构造并查集时用k[i]=1的代码:View Code #include<stdio.h>#include<math.h>struct node{ int x,y;}s[1001];int d;int set[1001];bool k[1001];int distance(node a,node b){ if((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)<=d) return 1; return 0; 阅读全文
posted @ 2011-07-25 08:53 渲染独白 阅读(216) 评论(0) 推荐(0)