参考博客: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 填充棒子(二分匹配)相关推荐

  1. POJ-2226 Muddy Fields 最小点集覆盖

    题目链接:http://poj.org/problem?id=2226 这题是POJ 3041的升级版本,很有意思,要求木板不能盖在草地上.那么这里我们可以把每行一连续'*'的看做行,把每列连续的'* ...

  2. POJ2226 Muddy Fields

    这道题目算是二分图中比较难的一道,明明知道是二分图问题,应该用匈牙利算法解决,可是看了半天也没发现二分图的特点在哪里,后来看了高人的博客才明白要把二维图抽象出来,将每一道x方向相连的"*&q ...

  3. POJ2226 Muddy Fields 二分图求最小覆盖点

    这题的关键在于建图,这题当中,因为要求木板覆盖泥坑,但又不能覆盖草,所以不能简单的行和列对应建图,我们要对行中泥坑进行编号,连一起的编同样的号,同样的对列中连一起的泥坑进行编号,如果行列编号的一块泥坑 ...

  4. poj Muddy Fields

    Muddy Fields 原题去我创的专题里找.在文件夹首页. 题目: 给出N*M矩阵.当中*表示泥土,.表示小草.要你用最少的木板把泥土覆盖. 木板长度不限,可是仅仅能水平和竖直. 行列式二分匹配配 ...

  5. 51nod Muddy Fields 2856

    题意: 2856 Muddy Fields 1.0 秒 262,144.0 KB 80 分 5级题 在一个n*m的草地上有一些泥坑,现在可以用宽度为1,长度任意的长木板去覆盖泥坑,但是木板不能覆盖草地 ...

  6. POJ - 2446 Chessboard 二分匹配+建图

    题目链接 题意很简单,是二分匹配的一种常见的题型,问题就在于怎样转换到二分图上来. 首先对对n*m-k正常点进行编号,然后遍历查找每一个正常点的上下左右是否能连接(就是判断另个点是否也是正常的),如果 ...

  7. poj3041--Asteroids(二分匹配)[将矩阵行列转化为边]

    题目大意,给出n*n的矩阵,其中有m个流星,一下给出每颗流星的坐标,每一次攻击可以消除一行或一列的流星,问最少攻击几次? 竟然是二分匹配!竟然是二分匹配!竟然是二分匹配!竟然是二分匹配! 建图,以行为 ...

  8. 香港大学提出OneNet:一阶段端到端目标检测网络,无需NMS!无需二分匹配!

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文作者:孙培泽 |  编辑:Amusi https://zhuanlan.zhihu.com ...

  9. 杭电2063--过山车(二分匹配)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

最新文章

  1. Kibana查询说明
  2. what should you do if you can be silent and do things
  3. 03 - const static extern
  4. 搜索引擎(lucene)
  5. ext 如何判断是否是整数_Excel表格技巧—如何用ISNUMBER判断是否是数值
  6. linux主机添加discuz伪静态规则,(总结)Nginx下Discuz 7.2伪静态规则设置
  7. 4款.Net报表控件优势对比分析
  8. 20050519:把机器拿到鸡兄那里去修了
  9. 刚装的matlab R2010a运行quad2d时提示找不到指定的程序! 提示信息: libmwblas: load error: csrot Caught
  10. 【Flutter】微信项目实战【08】 聊天界面搭建(上)
  11. Java基础String类
  12. 【转】Java多线程面试问题集锦
  13. 学校计算机基础考试教学,计算机基础大一考试题 浅谈中等职业学校计算机基础课程教学设计原则...
  14. 趋势突破策略与期权——以Dual Thrust为例
  15. Asio驱动开发学习笔记(1)
  16. 飞船利用计算机进行飞行状态调整属于,“神舟八号”飞船利用计算机进行飞行状态调整属于____。...
  17. tensorflow安装
  18. HTB靶机01-Blue-WriteUp
  19. Cobbler自动部署CentOS系统
  20. 计算机云计算服务外包,云计算上的三类外包计算

热门文章

  1. Android onKeyDown自定义功能
  2. Outlook邮箱只显示一个邮箱账号内容怎么解决,outlook如何切换邮箱账号显示
  3. 算法algo_tips、坑点、力扣刷题、Question问题
  4. 一个html中可以有几个script
  5. Python入门程序练习题-温度转换
  6. 写树算法的套路框架(摘抄labuladong大神)
  7. Python opencv调用笔记本电脑摄像头
  8. 二阶魔方 三阶魔方还原法
  9. crashfix平台搭建
  10. RealPlayer去除广告三法