poj2226 Muddy Fields 填充棒子(二分匹配)
参考博客:https://blog.csdn.net/liujc_/article/details/51287019
参考博客:https://blog.csdn.net/acdreamers/article/details/8621130
题目来源:http://poj.org/problem?id=2226
题意:
给你一个地图,用宽为一长随意的棒子横或竖地填满所有的 “*” 且不能填”.“
求最少的棒子数
题解:
每个* 都有一个需求,即有横的或竖的棒子经过它,对于每个点,建立一条边和两个二分图的点。求最小顶点覆盖==最大匹配
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
char ma[55][55];
int match[55*55];
int n,m;
bool used[55*55];
vector<int>g[55*55];
bool dfs(int x)
{if(used[x])return 0;used[x]=1;for(int i=0;i<g[x].size();i++){int V=g[x][i];if(match[V]==0||dfs(match[V])){match[V]=x;return 1;}}return 0;
}
int guar()
{int res=0;for(int i=1;i<=n*m;i++){for(int j=1;j<=n*m;j++)used[j]=0;if(dfs(i))res++;}return res;
}
int main()
{while(cin>>n>>m){for(int i=0;i<55*55;i++){g[i].clear();match[i]=0;}// cout<<n<<" "<<m<<endl;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>ma[i][j];for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){if(ma[i][j]=='*'){int y=i,x=j;while(x>1&&ma[i][x-1]=='*')x--;while(y>1&&ma[y-1][j]=='*')y--;g[(i-1)*m+x].push_back((y-1)*m+j);}}cout<<guar()<<endl;}}
转载于:https://www.cnblogs.com/carcar/p/9089353.html
poj2226 Muddy Fields 填充棒子(二分匹配)相关推荐
- POJ-2226 Muddy Fields 最小点集覆盖
题目链接:http://poj.org/problem?id=2226 这题是POJ 3041的升级版本,很有意思,要求木板不能盖在草地上.那么这里我们可以把每行一连续'*'的看做行,把每列连续的'* ...
- POJ2226 Muddy Fields
这道题目算是二分图中比较难的一道,明明知道是二分图问题,应该用匈牙利算法解决,可是看了半天也没发现二分图的特点在哪里,后来看了高人的博客才明白要把二维图抽象出来,将每一道x方向相连的"*&q ...
- POJ2226 Muddy Fields 二分图求最小覆盖点
这题的关键在于建图,这题当中,因为要求木板覆盖泥坑,但又不能覆盖草,所以不能简单的行和列对应建图,我们要对行中泥坑进行编号,连一起的编同样的号,同样的对列中连一起的泥坑进行编号,如果行列编号的一块泥坑 ...
- poj Muddy Fields
Muddy Fields 原题去我创的专题里找.在文件夹首页. 题目: 给出N*M矩阵.当中*表示泥土,.表示小草.要你用最少的木板把泥土覆盖. 木板长度不限,可是仅仅能水平和竖直. 行列式二分匹配配 ...
- 51nod Muddy Fields 2856
题意: 2856 Muddy Fields 1.0 秒 262,144.0 KB 80 分 5级题 在一个n*m的草地上有一些泥坑,现在可以用宽度为1,长度任意的长木板去覆盖泥坑,但是木板不能覆盖草地 ...
- POJ - 2446 Chessboard 二分匹配+建图
题目链接 题意很简单,是二分匹配的一种常见的题型,问题就在于怎样转换到二分图上来. 首先对对n*m-k正常点进行编号,然后遍历查找每一个正常点的上下左右是否能连接(就是判断另个点是否也是正常的),如果 ...
- poj3041--Asteroids(二分匹配)[将矩阵行列转化为边]
题目大意,给出n*n的矩阵,其中有m个流星,一下给出每颗流星的坐标,每一次攻击可以消除一行或一列的流星,问最少攻击几次? 竟然是二分匹配!竟然是二分匹配!竟然是二分匹配!竟然是二分匹配! 建图,以行为 ...
- 香港大学提出OneNet:一阶段端到端目标检测网络,无需NMS!无需二分匹配!
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文作者:孙培泽 | 编辑:Amusi https://zhuanlan.zhihu.com ...
- 杭电2063--过山车(二分匹配)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
最新文章
- Kibana查询说明
- what should you do if you can be silent and do things
- 03 - const static extern
- 搜索引擎(lucene)
- ext 如何判断是否是整数_Excel表格技巧—如何用ISNUMBER判断是否是数值
- linux主机添加discuz伪静态规则,(总结)Nginx下Discuz 7.2伪静态规则设置
- 4款.Net报表控件优势对比分析
- 20050519:把机器拿到鸡兄那里去修了
- 刚装的matlab R2010a运行quad2d时提示找不到指定的程序! 提示信息: libmwblas: load error: csrot Caught
- 【Flutter】微信项目实战【08】 聊天界面搭建(上)
- Java基础String类
- 【转】Java多线程面试问题集锦
- 学校计算机基础考试教学,计算机基础大一考试题 浅谈中等职业学校计算机基础课程教学设计原则...
- 趋势突破策略与期权——以Dual Thrust为例
- Asio驱动开发学习笔记(1)
- 飞船利用计算机进行飞行状态调整属于,“神舟八号”飞船利用计算机进行飞行状态调整属于____。...
- tensorflow安装
- HTB靶机01-Blue-WriteUp
- Cobbler自动部署CentOS系统
- 计算机云计算服务外包,云计算上的三类外包计算