POJ-2226 Muddy Fields 最小点集覆盖
题目链接:http://poj.org/problem?id=2226
这题是POJ 3041的升级版本,很有意思,要求木板不能盖在草地上。那么这里我们可以把每行一连续‘*’的看做行,把每列连续的‘*’看做列,那么在建模就是POJ 3041的原题了。
看一个例子:
3 3 X集合 Y集合
.*. 010 020
*** ———> 222 123
.*. 033 020
那么再根据X,Y集合连边即可。
要覆盖图中所有的点,即二分图中的边,那么就是最小点集覆盖了。
1 //STATUS:G++_AC_16MS_1760KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #include<vector> 10 #include<queue> 11 #include<stack> 12 using namespace std; 13 #define LL long long 14 #define Max(a,b) ((a)>(b)?(a):(b)) 15 #define Min(a,b) ((a)<(b)?(a):(b)) 16 #define mem(a,b) memset(a,b,sizeof(a)) 17 #define lson l,mid,rt<<1 18 #define rson mid+1,r,rt<<1|1 19 const int MAX=60,INF=200000000; 20 21 char map[MAX][MAX]; 22 int g[510][510],vis[510],y[510],grax[MAX][MAX],gray[MAX][MAX]; 23 int n,m,cou; 24 25 void getg() 26 { 27 mem(grax,0); 28 mem(gray,0); 29 int i,j,k; 30 for(k=i=0;i<n;i++){ 31 for(j=0;j<m;j++){ 32 if(map[i][j]=='*'){ 33 k++; 34 for(;map[i][j]=='*';j++) 35 grax[i][j]=k; 36 } 37 } 38 } 39 cou=Max(cou,k); 40 for(k=j=0;j<m;j++){ 41 for(i=0;i<n;i++){ 42 if(map[i][j]=='*'){ 43 k++; 44 for(;map[i][j]=='*';i++) 45 gray[i][j]=k; 46 } 47 } 48 } 49 cou=Max(cou,k); 50 for(i=0;i<n;i++){ 51 for(j=0;j<m;j++){ 52 if(grax[i][j] && gray[i][j]) 53 g[grax[i][j]][gray[i][j]]=1; 54 } 55 } 56 } 57 58 int dfs(int u) 59 { 60 int v; 61 for(v=1;v<=cou;v++){ 62 if(g[u][v] && !vis[v]){ 63 vis[v]=1; 64 if(!y[v] || dfs(y[v])){ 65 y[v]=u; 66 return 1; 67 } 68 } 69 } 70 return 0; 71 } 72 73 int main() 74 { 75 // freopen("in.txt","r",stdin); 76 int i,j,ans; 77 while(~scanf("%d%d",&n,&m)) 78 { 79 ans=cou=0; 80 mem(y,0); 81 mem(g,0); 82 for(i=0;i<n;i++){ 83 scanf("%s",map[i]); 84 } 85 86 getg(); 87 for(i=1;i<=cou;i++){ 88 mem(vis,0); 89 if(dfs(i))ans++; 90 } 91 92 printf("%d\n",ans); 93 } 94 }
转载于:https://www.cnblogs.com/zhsl/archive/2012/11/19/2776783.html
POJ-2226 Muddy Fields 最小点集覆盖相关推荐
- POJ 2226 Muddy Fields 最小点覆盖+加建图(好题)
题目链接 题目一看就是最小点覆盖,这道题与POJ - 3041 算是一类题,但是3041算是一道十分裸的,因为删除的是整行或者整列,所以图其实是现成的,但是本题的难点就在如何建图. 思路:首先还是尽量 ...
- POJ - 2226 Muddy Fields(最小点覆盖-二分图最大匹配)
题目链接:点击查看 题目大意:给出一个n*m的地图,地图中'*'代表泥地,'.'代表空地,现在我们有两种木板,一种可以覆盖一行中的任意长度,我们成为行木板,另一种可以覆盖一列中的任意长度,我们成为列木 ...
- poj 2226 Muddy Fields 最小顶点覆盖
题目链接:http://poj.org/problem?id=2226 这道题跟上一道很相似不同之处在于这里不是整行或者整列的删,而是连续的几个可以一起删,不连的不能删,这就要对原图进行处理,对原有的 ...
- POJ 2226 Muddy Fields(最小点覆盖)题解
题意:一片r*c的地,有些地方是泥地,需要铺地板.这些地板宽1,长无限,但只能铺在泥地上不能压到其他地方,问你铺满所有泥地最少几块 思路:我们把一行中连续的泥地看成整体,并把所有横的整体里的点编成一个 ...
- poj 2226 Muddy Fields(合理建图+二分匹配)
1 /* 2 题意:用木板盖住泥泞的地方,不能盖住草.木板任意长!可以重叠覆盖! '*'表示泥泞的地方,'.'表示草! 3 思路: 4 首先让我们回忆一下HDU 2119 Matrix这一道题,一个矩 ...
- POJ 1325 Machine Schedule(二分图最小点集覆盖)
题目链接:http://poj.org/problem?id=1325 题意:A机器有n个模式,B机器有m个模式,有k个任务,第i个任务可以用A机器的ai模式或者B机器的bi模式,换模式需要重启,开始 ...
- POJ 1422 Air Raid (最小路径覆盖)
题意 给定一个有向图,在这个图上的某些点上放伞兵,可以使伞兵可以走到图上所有的点.且每个点只被一个伞兵走一次.问至少放多少伞兵. 思路 裸的最小路径覆盖. °最小路径覆盖 [路径覆盖]在一个有向图G( ...
- poj 2594 Treasure Exploration 最小路径覆盖
题目链接:http://poj.org/problem?id=2594 建图很重要!!! 大致题意: 给出一个由n个顶点m条边组成的有向无环图.求最少可以同时存在多少路径,使得这些路径可以覆盖所有的点 ...
- POJ - 2594 Treasure Exploration(最小路径覆盖-二分图最大匹配+传递闭包)
题目链接:点击查看 题目大意:给出一个有向图,现在需要让最少的机器人沿着图遍历所有点,求出最少需要机器人的数量,注意每个点可以重复遍历 题目分析:因为要遍历所有点,所以还是变成了二分图的最小路径覆盖问 ...
最新文章
- Java排序算法之归并排序
- 皮一皮:论一件艺术品的诞生...
- poj 2506 Tiling (递推)
- oracle查询案例,2道经典的oracle查询案例
- Hexo 博客自定义一个不使用主题模板渲染的独立页面
- 1.13 编程基础之综合应用 10 判决素数个数 python
- 轻量化网络:SqueezeNext
- MySQLl数据量不一样,导致走不同的索引
- arm 服务器cpu型号,挑战英特尔ARM Tilera发布36核服务器CPU
- 电脑快速截屏(缺少PrtScr键)
- 南航计算机考研调剂,南京航空航天大学接受调剂生的时间定了,南航读研就业会咋样...
- 【EXCEL批量查询手机号归属地小技巧】很多网友想看excel怎么批量查询手机号归属地,今天它来了
- 程序员可以培养的第二技能有哪些?
- 计算机网络实验-路由器IP地址配置及直连网络和ARP协议分析
- Golang——从入门到放弃
- 解决IE浏览器没有网络的情况
- 用HTML和CSS制作一个网页
- leetcode844 比较含退格的字符串(python)
- Wireshark搜索关键字内容
- MCR和MRC汇编指令
热门文章
- 用RT Server Customizer定制Windows 2008 R2安装光盘
- 对于已经加入版本控制的文件,我们可以强制忽略文件git update-index --assume-unchanged local.properties...
- [短评]企业裁员行为对整个社会的正面意义
- 获取Kubernetes容器上下文环境
- php 判断赋值 简写,PHP IF 判断简写
- MySQL之mysqldump的使用
- php 调用vs2013 dll文件,vs2015 肿么添加dll文件
- mysql后天命令查下显示_MySQL命令
- 2020-08-09
- 计算机病毒不会直接危害计算机用户的健康,北京语言大学入学测试机考(高起点)计算机基础模拟题...