题目

求2*1的骨牌是否能覆盖棋盘。


分析

首先,如果抠掉后剩下的块数是奇数,就不会成立。
接着,如果奇数点和偶数点数量不同,也不会成立(留给读者思考)

特判结束后,二分图走起。


代码

#include <cstdio>
#include <cctype>
#include <cstring>
using namespace std;
const short dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
short n,m,k,v[33][33],m1,m2,x[551],y[551],cover[551],link[551],ans;
int in(){int ans=0; char c=getchar();while (!isdigit(c)) c=getchar();while (isdigit(c)) ans=ans*10+c-48,c=getchar();return ans;
}
bool find(int num){int x1=x[num],y1=y[num];for (int i=0;i<4;i++){int x2=x1+dx[i],y2=y1+dy[i]; int j=v[x2][y2];if (x2<1||y2<1||x2>n||y2>m||j==6e2||cover[j]) continue;int q=link[j]; link[j]=num; cover[j]=1;if (!q||find(q)) return 1; link[j]=q; }return 0;
}
int main(){m=in(); n=in(); k=in();if ((n*m-k)%2) return !printf("NO");for (int i=1;i<=k;i++) v[in()][in()]=6e2;for (int i=1;i<=n;i++)for (int j=1;j<=m;j++)if (v[i][j]!=6e2){if ((i+j)%2==0) v[i][j]=++m2;else v[i][j]=++m1,x[m1]=i,y[m1]=j;}for (int i=1;i<=m1;i++)memset(cover,0,sizeof(cover)),ans+=find(i);if (ans*2==(n*m-k)) return !printf("YES");else return !printf("NO");
}

poj 2446 Chessboard#匈牙利算法#相关推荐

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

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

  2. poj 2446:Chessboard

    2446:Chessboard 总时间限制: 2000ms 内存限制: 65536kB 描述 Alice and Bob often play games on chessboard. One day ...

  3. 二分图最大匹配(匈牙利算法) POJ 3020 Antenna Placement

    题目传送门 1 /* 2 题意:*的点占据后能顺带占据四个方向的一个*,问最少要占据多少个 3 匈牙利算法:按坐标奇偶性把*分为两个集合,那么除了匹配的其中一方是顺带占据外,其他都要占据 4 */ 5 ...

  4. 利用匈牙利算法Hopcroft-Karp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES...

    首先介绍一下题意:已知,有N个学生和P门课程,每个学生可以选0门,1门或者多门课程,要求在N个学生中选出P个学生使得这P个学生与P门课程一一对应. 这个问题既可以利用最大流算法解决也可以用匈牙利算法解 ...

  5. POJ - 1469 COURSES (匈牙利算法入门题)

    题意: P门课程,N个学生.给出每门课程的选课学生,求是否可以给每门课程选出一个课代表.课代表必须是选了该课的学生且每个学生只能当一门课程的. 题解: 匈牙利算法的入门题. #include < ...

  6. POJ 1469 匈牙利算法

    匈牙利算法. 在于不停的找增广路. #include<iostream> #include<cstdio> #include<iostream> #include& ...

  7. 二分图的最大匹配—匈牙利算法

    [基本概念]: 二分图: 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分 ...

  8. 二分图的最大匹配 匈牙利算法

    基本概念 1.二分图: 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别 ...

  9. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

最新文章

  1. ubuntu彻底卸载mysql并且重新安装
  2. SCRIPT LOAD lua文件
  3. LeetCode Maximum XOR of Two Numbers in an Array(贪心、字典树)
  4. 你需要来自trustedinstaller的权限才能删除_前后端分离后的权限控制设计方案
  5. 32位十六进制浮点数转换为十进制浮点数的方法
  6. hdu 6899 Xor 数位dp
  7. 专题突破二之优先队列、st表——,Running Median,Sequence,Buy Low Sell High,数据备份,超级钢琴,ZQC的手办
  8. 移动机器人构型对比分析
  9. 使用Kotlin的Android AsyncTask
  10. Python Tkinter Grid布局管理器详解
  11. 数据结构与算法python—12.二叉搜索树及python实现与leetcode总结
  12. 机器学习- 吴恩达Andrew Ng Week6 知识总结 Machine Learning System Design
  13. 软件企业CMMI认证需要什么条件?
  14. html css开关按钮样式,纯CSS实现开关按钮
  15. 失业一年,学做跨境电商赚了50万,才知道上班是真的耽误赚钱 !
  16. 基于facades数据集的图像成任务,完成各种GAN的对比实验
  17. 三子棋游戏(呆呆详解版)
  18. 【paper 学习】1、DeepWiFi: Cognitive WiFi with Deep Learning
  19. 半夜冒着大雨跑网吧写文章是怎样的体验?
  20. 在datadog中对某个主机上的进程进行监控

热门文章

  1. 机器学习实战-决策树(二)Python实现
  2. 摩根斯丹利(大摩)面试经历
  3. HC32L110(四) HC32L110的startup启动文件和ld连接脚本
  4. (Mac版)WebStorm常用快捷键
  5. 用锚点克服演讲紧张症
  6. 为什么有些事我们明知道是正确的的,却不付诸行动呢?
  7. word2vec中的负采样问题
  8. 十款优质企业级Java微服务开源项目(开源框架,用于学习、毕设、公司项目、私活等,减少开发工作,让您只关注业务!)
  9. java 一致性hash算法 均衡分发_负载均衡-基础-一致性哈希算法及java实现
  10. centos7.5 定时任务不执行,定时任务日志报错信息为 MAIL (mailed 68 bytes of output but got status 0x004b#012)