题目

Description

如何放木板保证只覆盖到 ’*’ 而没有覆盖到 ’.’

Solution

(我太废了竟然想这题想了一个小时)考虑当前需要被覆盖的点 (x,y),假设有一块横着铺的木板 i ,一块竖着铺的木板 j,这两块木板同时经过了 (x,y),那么我们以横着铺的木板为左部点,竖着铺的木板为右部点,将这两个木板之间连一条边。问题就转化为了求二分图上的最小点覆盖。(因为每个要覆盖的点是一条边,要让每个点都被覆盖,等价于最小点覆盖)。

Code

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. using namespace std;
  5.  
  6. ];
  7. ];
  8. ];
  9. ][];
  10. int m,n,cnt,tot1,tot2,ans;
  11. ][],yy[][];
  12.  
  13. struct Edge{
  14. int to,nxt;
  15. }edge[];
  16.  
  17. void add(int x,int y){
  18. edge[++cnt].to=y;
  19. edge[cnt].nxt=head[x];
  20. head[x]=cnt;
  21. }
  22.  
  23. bool dfs(int now){
  24. ;
  25. vis[now]=;
  26. for(int i=head[now];i;i=edge[i].nxt){
  27. int to=edge[i].to;
  28. if(!pre[to]||dfs(pre[to])){
  29. pre[to]=now;
  30. ;
  31. }
  32. }
  33. ;
  34. }
  35.  
  36. signed main(){
  37. scanf("%d%d",&m,&n);
  38. ;i<=m;i++){
  39. ;j<=n;j++){
  40. char ch;cin>>ch;
  41. ;
  42. ;
  43. }
  44. }
  45. ;i<=m;i++){
  46. ;j<=n;j++){
  47. if(!mp[i][j]) continue;
  48. ][j]) xx[i][j]=xx[i-][j];
  49. else xx[i][j]=++tot1;
  50. ]) yy[i][j]=yy[i][j-];
  51. else yy[i][j]=++tot2;
  52. }
  53. }
  54. ;i<=m;i++){
  55. ;j<=n;j++){
  56. if(!mp[i][j]) continue;
  57. add(xx[i][j],yy[i][j]);
  58. }
  59. }
  60. ;i<=tot1;i++){
  61. memset(vis,,sizeof vis);
  62. if(dfs(i)) ans++;
  63. }
  64. printf("%d",ans);
  65. ;
  66. }

[POJ 2226] Muddy Fields的更多相关文章

  1. POJ 2226 Muddy Fields(最小顶点覆盖)

    POJ 2226 Muddy Fields 题目链接 题意:给定一个图,要求用纸片去覆盖'*'的位置.纸片能够重叠.可是不能放到'.'的位置,为最少须要几个纸片 思路:二分图匹配求最小点覆盖.和放车那 ...

  2. poj 2226 Muddy Fields(最小覆盖点+构图)

    http://poj.org/problem?id=2226 Muddy Fields Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  3. poj 2226 Muddy Fields (转化成二分图的最小覆盖)

    http://poj.org/problem?id=2226 Muddy Fields Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  4. poj 2226 Muddy Fields (二分匹配)

    Muddy Fields Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7340   Accepted: 2715 Desc ...

  5. [POJ] 2226 Muddy Fields(二分图最小点覆盖)

    题目地址:http://poj.org/problem?id=2226 二分图的题目关键在于建图.因为“*”的地方只有两种木板覆盖方式:水平或竖直,所以运用这种方式进行二分.首先按行排列,算出每个&q ...

  6. POJ 2226 Muddy Fields (二分图匹配)

    [题目链接] http://poj.org/problem?id=2226 [题目大意] 给出一张图,上面有泥和草地,有泥的地方需要用1*k的木板覆盖, 有草地的地方不希望被覆盖,问在此条件下需要的最 ...

  7. POJ 2226 Muddy Fields (最小点覆盖集,对比POJ 3041)

    题意 给出的是N*M的矩阵,同样是有障碍的格子,要求每次只能消除一行或一列中连续的格子,最少消除多少次可以全部清除. 思路 相当于POJ 3041升级版,不同之处在于这次不能一列一行全部消掉,那些非障 ...

  8. poj 2226 Muddy Fields(最小点覆盖+巧妙构图)

      Description Rain has pummeled the cows' field, a rectangular grid of R rows and C columns (1 <= ...

  9. poj 2226 Muddy Fields(水二分图)

    Rain has pummeled the cows' field, a rectangular grid of R rows and C columns (1 <= R <= 50, 1 ...

  10. POJ 2226 Muddy Fields(最小点覆盖)题解

    题意:一片r*c的地,有些地方是泥地,需要铺地板.这些地板宽1,长无限,但只能铺在泥地上不能压到其他地方,问你铺满所有泥地最少几块 思路:我们把一行中连续的泥地看成整体,并把所有横的整体里的点编成一个 ...

随机推荐

  1. python 下划线--完美解释

    Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...

  2. 关于Maven的web项目的创建

    网上关于Maven的web项目创建多种多样,先本人在研究Maven之余,创建一套自己试过并有效的创建步骤. 1.点击右键>选择Maven Project,如下图所示: 2.点击创建,如下图所示: ...

  3. SQL语句报错(一)

    SQL语句报错(一) 1.具体报错如下: ORA-01861:文字格式字符串不匹配 01861. 00000 - "literal does not match format string& ...

  4. MySQL显示状态信息

    MySQL显示状态信息 1.show status mysql> show status; +-----------------------------------+----------+ | ...

  5. USB设备驱动概述

    USB设备驱动 ·  )USB Hub:每个USBHost控制器都会自带一个USB Hub,被称为根(Root)Hub.这个根Hub可以接子(Sub)Hub,每个Hub上挂载USB设备.一般PC有8个 ...

  6. Error Code: 1630. FUNCTION rand.string does not exist

    1.错误描述 13:50:13 call new_procedure Error Code: 1630. FUNCTION rand.string does not exist. Check the ...

  7. Linux显示指定区块大小为1048576字节

    Linux显示指定区块大小为1048576字节 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ df -m 文件系统 1M-blocks 已用 可用 已用% 挂 ...

  8. E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用)

    1 错误描述 youhaidong@youhaidong:~$ sudo apt-get update E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂 ...

  9. Openstack_O版(otaka)部署_镜像服务glance部署

    安装和配置服务 1. 建库建用户 mysql -u root -p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO '; GRA ...

  10. 网络协议笔记-网络层-ARP协议

    [2-地址解析协议ARP] [2.1-基本概念] 地址解析协议ARP的作用是根据主机的IP地址,找出该主机的硬件地址. [2.2-为什么要使用ARP] 在数据传输过程中,网络层使用的IP地址,但是在实 ...