hdu4185解题报告
来源:互联网 发布:知乎 智能晾衣架 编辑:程序博客网 时间:2024/05/01 09:32
这里我居然能自己想想到怎么建图匹配,很是不容易...
题意:这里有一片油田,但是不是纯净的,有的地方是水,现在有一个捞石油的机器,但是这个机器捞的范围是固定的,是2*1的一个矩形大小,那么对于整个油田打捞,也只能打捞2*1的地方,那么,最多可以打捞多少?
分析:
这里对于图中每一个‘#’,我们就遍历四周有没有‘#’,如果有,那么这个'#'就可以和旁边的‘#‘就可以匹配,但是这里的图中都是字符,我们就先遍历一次,对于每个'#'编号,然后建图,这里我的处理方式是从上到下,从左到右,对于每一个’#‘,就只看右边和下边有没有’#‘,然后建双向边,实际上和对于每个点,向四个方向找'#'是一样的
那么直接上马
//296MS 4576K #include<stdio.h>#include<string.h>#define MAX 601struct Edge{int to,next;}edge[MAX*MAX];int head[MAX*MAX],tol;void add(int a,int b){edge[tol].to = b;edge[tol].next = head[a];head[a] = tol ++;}char map[MAX][MAX];int sum,QQ[MAX][MAX];int vis[2][2]={{1,0},{0,1}};int link[MAX*MAX],flag[MAX*MAX];bool dfs(int u){for(int i = head[u]; i != -1; i = edge[i].next){int v = edge[i].to;if(!flag[v]){flag[v] = 1;if(link[v] == -1 || dfs(link[v])){link[v] = u;return true;}}}return false;}int match(){int ans = 0;memset(link,-1,sizeof(link));for(int u = 0; u < sum; u ++){memset(flag,0,sizeof(flag));if(dfs(u)) ans ++;}return ans/2;}int main(){int i,j;int T,N;scanf("%d",&T);for(int cas = 1; cas <= T; cas ++){tol = 0;sum = 0;memset(head,-1,sizeof(head));scanf("%d",&N);for(i = 0; i < N; i ++,getchar())scanf("%s",map[i]);//建图for(i = 0; i < N; i++)for(j = 0; j < N; j ++)if(map[i][j] == '#')QQ[i][j] = sum++;//map[i][j] = sum ++ +'0';这样不可以,如果超过9,10这个不是一个字符啦....只能借助一个数组for(i = 0; i < N; i ++)for(j = 0; j < N; j ++){if(map[i][j] != '.')for(int k = 0; k < 4; k ++){int x = i + vis[k][0],y = j + vis[k][1];if(y >= 0 && y < N && x >= 0 && x < N && map[x][y] != '.')// 等价map[x][y] == '#'add(QQ[i][j], QQ[x][y]),add(QQ[x][y], QQ[i][j]);}}printf("Case %d: %d\n",cas,match());}return 0;}个人愚昧观点,欢迎指正和讨论
- hdu4185解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- Antiprime解题报告
- expr解题报告
- 华容道解题报告
- tju解题报告
- zju1062/pku1095解题报告
- UsacoGate解题报告 --- 序曲
- ZJU 2060 解题报告
- ZJU 1331 解题报告
- ZJU 1115 解题报告
- ZJU1057解题报告
- Google Round B China New Grad Test 2014
- 论文读书笔记-google news personalization: scalable online collaborative filtering
- 快速排序转冒泡排序的临界值
- 【职场新人】如何消除挨批后的苦闷
- SqlBulkCopy来实现批量插入数据的功能
- hdu4185解题报告
- SQL Server: 如何为函数(或其它对象)添加版本信息
- nyoj-696-Course
- macos lua环境搭建
- VC操作ADO的基本流程
- 8021x 获取IP信息失败,请检查锐捷认证客户端当前配置是否符合所在网络的要求,检查完毕后尝试重新认证
- IOS CoreData 使用 (一)
- SVN服务器更改ip地址客户端怎么设置
- Code Jam 2009 Round1C Problem C. Bribe the Prisoners —— 区间DP