1022 覆盖

 
 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 大师 Master
 查看运行结果
 
 
题目描述 Description

有一个N×M的单位方格中,其中有些方格是水塘,其他方格是陆地。如果要用1×2的矩阵区覆盖(覆盖过程不容许有任何部分重叠)这个陆地,那么最多可以覆盖多少陆地面积。

输入描述 Input Description

输入文件的第一行是两个整数NM  (1<=NM<=100),第二行为一个整数K( K<=50),接下来的K行,每行两个整数X,Y表示K个水塘的行列位置。(1<=X<=N1<=Y<=M)。

输出描述 Output Description

输出所覆盖的最大面积块(1×2面积算一块)。

样例输入 Sample Input

4 4

6

1 1

1 4

2 2

4 1

4 2

4 4

样例输出 Sample Output

4

解题思路   将该题目转化为二分图使用匈牙利算法解

n*m的格子可以按顺序分成0 1的图
如 
0101010101
1010101010
0101010101
1010101010
一个点的位置(x,y)可以和周围的点(x+1,y),(x,y-1),(x,y+1),(x-1,y)进行两两匹配
有水的地方直接跳过
得出最后最多有多少对匹配成功的点
即答案所求 多少可以覆盖多少板子

  1. #include<iostream>
  2.  
  3. #include<cstring>
  4.  
  5. using namespace std;
  6.  
  7. int n,m,k,a,b,ans;
  8.  
  9. bool water[][];
  10.  
  11. bool ok[][];
  12.  
  13. int linkx[][];
  14.  
  15. int linky[][];
  16.  
  17. int dx[]={,,,-};
  18.  
  19. int dy[]={,-,,};
  20.  
  21. bool dfs(int x,int y)
  22.  
  23. {
  24.  
  25. if(water[x][y])return false;
  26.  
  27. for(int i=;i<;i++)
  28.  
  29. {
  30.  
  31. int xx=x+dx[i];
  32.  
  33. int yy=y+dy[i];
  34.  
  35. if(xx>&&yy>&&yy<=m&&xx<=n&&water[xx][yy]==false&&ok[xx][yy]==false)
  36.  
  37. {
  38.  
  39. ok[xx][yy]=true;
  40.  
  41. if(linkx[xx][yy]==||dfs(linkx[xx][yy],linky[xx][yy]))
  42.  
  43. {
  44.  
  45. linkx[xx][yy]=x;
  46.  
  47. linky[xx][yy]=y;
  48.  
  49. return true;
  50.  
  51. }
  52.  
  53. }
  54.  
  55. }
  56.  
  57. return false;
  58.  
  59. }
  60.  
  61. int main()
  62.  
  63. {
  64.  
  65. cin>>n>>m>>k;
  66.  
  67. for(int i=;i<k;i++)
  68.  
  69. {
  70.  
  71. cin>>a>>b;
  72.  
  73. water[a][b]=true;
  74.  
  75. }
  76.  
  77. for(int i=;i<=n;i++)
  78.  
  79. for(int j=;j<=m;j++)
  80.  
  81. {
  82.  
  83. memset(ok,,sizeof(ok));
  84.  
  85. if(i%==j%)
  86.  
  87. if(dfs(i,j))
  88.  
  89. ans++;
  90.  
  91. }
  92.  
  93. cout<<ans<<endl;
  94.  
  95. return ;
  96.  
  97. }

匈牙利算法实战codevs1022覆盖的更多相关文章

  1. poj3041 Asteroids 匈牙利算法 最小点集覆盖问题=二分图最大匹配

    /** 题目:poj3041 Asteroids 链接:http://poj.org/problem?id=3041 题意:给定n*n的矩阵,'X'表示障碍物,'.'表示空格;你有一把枪,每一发子弹可 ...

  2. CODEVS1022 覆盖 (二分图染色+匈牙利算法)

    先对整幅图进行二分图染色,再跑一遍匈牙利算法. /* CODEVS1022 */ #include <cstdio> #include <cstring> #include & ...

  3. 网络流24题 第三题 - CodeVS1904 洛谷2764 最小路径覆盖问题 有向无环图最小路径覆盖 最大流 二分图匹配 匈牙利算法

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - CodeVS1904 题目传送门 - 洛谷2764 题意概括 给出一个有向无环图,现在请你求一些路径,这些路径 ...

  4. cogs 728. [网络流24题] 最小路径覆盖问题 匈牙利算法

    728. [网络流24题] 最小路径覆盖问题 ★★★☆   输入文件:path3.in   输出文件:path3.out   评测插件时间限制:1 s   内存限制:128 MB 算法实现题8-3 最 ...

  5. HDU1054 Strategic Game——匈牙利算法

    Strategic Game Bob enjoys playing computer games, especially strategic games, but sometimes he canno ...

  6. HDU 1150 Machine Schedule (最小覆盖,匈牙利算法)

    题意: 有两台不同机器A和B,他们分别拥有各种运行模式1~n和1~m.现有一些job,需要在某模式下才能完成,job1在A和B上需要的工作模式又可能会不一样.两台机器一开始处于0模式,可以切换模式,但 ...

  7. UVALive 6811 Irrigation Line(二分图最小点覆盖--匈牙利算法)

    题意:求最少的线可以覆盖一个由0.1两种数字组成的图中所有的1. eg: 只需要两条线即可. 分析: 1.先为上述例子的行列标号 2.若图中数字为1,则代表该数字所在的行与列有关联. 例如第r1行第c ...

  8. hdu-1150(二分图+匈牙利算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 思路:题目中给出两个机器A,B:给出k个任务,每个任务可以由A的x状态或者B的y状态来完成. 完 ...

  9. 「知识学习」二分图的最大匹配、完美匹配和匈牙利算法(HDU-2063)

    定义 如果一个图\((E,V)\)的顶点集\(E\)能够被能够被分成两个不相交的集合\(X,Y\),且每一条边都恰连接\(X,Y\)中的各一个顶点,那么这个图就是一个二分图. 容易得知,它就是不含有奇 ...

随机推荐

  1. camunda授权的一些简单操作

    /** * 授权操作 */public class ZccAuthorizationService { AuthorizationService authorizationService; @Befo ...

  2. bootstrapTble 的一些小结

    前言: 1.bootstrapTable 官网  http://bootstrap-table.wenzhixin.net.cn/zh-cn/ ,http://bootstrap-table.wenz ...

  3. 制作 macOS High Sierra U盘

    制作 macOS High Sierra U盘USB启动安装盘方法教程 (全新安装 Mac 系统) 随着苹果 macOS High Sierra 正式版发布,很多使用 Mac 电脑的同学都已升级到最新 ...

  4. Spark和pyspark的配置安装

    如何安装Spark和Pyspark构建Spark学习环境[MacOs] JDK环境 Python环境 Spark引擎 下载地址:Apache-Spark官网 MacOs下一般安装在/usr/local ...

  5. echarts 给formatter文字添加不同颜色

    legend: { x : 'center', y : 'bottom', icon: "circle", itemWidth: 8, // 设置宽度 itemHeight: 8, ...

  6. 使用vscode搭建本地的websocket

    首先在服务器方面,网上都有不同的对websocket支持的服务器: php - http://code.google.com/p/phpwebsocket/ jetty - http://jetty. ...

  7. 搜索solr

    这是我第一次写博客,没有系统性.专业性,东西很杂,也不知道自己在写些什么. SOA分布式架构,所以,使用solr,搜索层的服务层需要搭建起来.搜索系统的表现层搭建 ,打包方式是war包 域名改变代表系 ...

  8. Git中crlf自动转换的坑

    新上手一个项目,克隆了代码下来搭环境,一路坑.其中一个sh脚本执行不了,报IOException,java日志除了"找不到文件或文件夹"之外看不出任何信息,手动运行脚本才发现是脚本 ...

  9. 群晖NAS被攻击

    上周给新员工办理入职的时候,因为我们有自己的NAS系统,给他们建账号的时候,突然发现群晖无法登陆,很奇怪. 然后查看群晖系统,发现网络能Ping 通,但是群晖管理界面无法打开,一开始以为机房天热,硬盘 ...

  10. 使用truelicense实现用于JAVA工程license机制(包括license生成和验证)

    开发的软件产品在交付使用的时候,往往会授权一段时间的试用期,这个时候license就派上用场了.不同于在代码中直接加上时间约束,需要重新授权的时候使用license可以避免修改源码,改动部署,授权方直 ...