[poj2446]Chessboard

Description

给定一个m×n的棋盘,上面有k个洞,求是否能在不重复覆盖且不覆盖到洞的情况下,用2×1的卡片完全覆盖棋盘。

Input

第一行有三个整数n,m,k(0<m,n<=32, 0<=k<m×n),m表示行数,n表示列数。

接下来k行,每行两个整数y,x,表示(x,y)上有个洞。

Output

如果能覆盖,输出YES;否则输出NO

Sample Input

4 3 2

2 1

3 3

Sample Output

YES

Solution

32×32的范围如果暴搜剪枝能力比较强的人也许能过吧,但是我并没有那个能力。

2×1的卡片去覆盖的话,就是两个相邻的格子为一对,且每个格子只能属于一对(有洞的格子不属于任何一对)

怎么有点像二分图匹配?那就想想怎么构图吧。

定义两格子相邻当且仅当它们有一条公共边时。

那么两个相邻的格子就得在不同集合里,按这样分正好能分成两个集合。

然后两个可放卡片的相邻格子连一条边,这样二分图就构成功了。

 1 #include<set> 
 2 #include<cmath>
 3 #include<ctime>
 4 #include<queue>
 5 #include<stack>
 6 #include<cstdio>
 7 #include<vector>
 8 #include<cstring>
 9 #include<cstdlib>
10 #include<iostream>
11 #include<algorithm>
12 #define D 5 
13 #define N 35
14 #define K 513
15 #define M 2049
16 using namespace std;
17 struct graph{
18     int nxt,to;
19 }e[M];
20 int x[D]={0,0,0,1,-1},y[D]={0,1,-1,0,0};
21 int g[K],fr[N*N],m,n,k,cnt,tot,sum;
22 bool b[N][N],u[N*N];
23 inline void addedge(int x,int y){
24     e[++cnt].nxt=g[x];g[x]=cnt;e[cnt].to=y;
25 }
26 inline bool match(int k){
27     for(int i=g[k];i;i=e[i].nxt)
28         if(!u[e[i].to]){
29             u[e[i].to]=true;
30             if(!fr[e[i].to]||match(fr[e[i].to])){
31                 fr[e[i].to]=k;return true;
32             }
33         }
34     return false;
35 }
36 inline bool hungary(){
37     for(int i=1;i<=tot;i++){
38         memset(u,0,sizeof(u));
39         if(!match(i)) return false;
40     }
41     return true;
42 }
43 inline void init(){
44     scanf("%d%d%d",&m,&n,&k);
45     for(int i=1;i<=m;i++)
46         for(int j=1;j<=n;j++)
47             b[i][j]=true;
48     for(int i=1,j,l;i<=k;i++){
49         scanf("%d%d",&j,&l);
50         b[l][j]=false;
51     }
52     for(int i=1;i<=m;i++)
53         for(int j=!(i&1)+1;j<=n;j+=2)
54             if(b[i][j]){
55                 ++tot;
56                 for(int l=1;l<D;l++)
57                     if(b[i+x[l]][j+y[l]])
58                         addedge(tot,(i+x[l]-1)*n+j+y[l]);
59             }
60     for(int i=1;i<=m;i++)
61         for(int j=(i&1)+1;j<=n;j+=2)
62             if(b[i][j]) sum++;
63     if(sum==tot&&hungary()) printf("YES\n");
64     else printf("NO\n");
65 }
66 int main(){
67     freopen("chessboard.in","r",stdin);
68     freopen("chessboard.out","w",stdout);
69     init();
70     fclose(stdin);
71     fclose(stdout);
72     return 0;
73 }

 

 

 

 

转载于:https://www.cnblogs.com/AireenYe/p/5658005.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu下编译内核

一、下载源代码和编译软件的准备 下载内核源代码&#xff1a;http://www.kernel.org/ 注意&#xff0c;点击2.6.25内核的F版&#xff0c;即完整版。 如果你懒得去网站点联接&#xff0c;运行下列命令&#xff1a; 代码:$cd ~$ wget http://www.kernel.org/pub/linux/kernel/v2.…

(10)C#偷懒的开始永无止境的循环?

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

活照片 android,活照片app安卓

活照片app是当前国内一款最新的图片处理应用软件&#xff0c;能帮助大家快速进行最新的手机拍照、处理功能&#xff0c;当前活照片app已经推出了安卓、苹果版本&#xff0c;可以帮助大家一键修图&#xff0c;将你的图片变得更加有趣。活照片app功能&#xff1a;它可以让你的照片…

Jwt隐藏大坑,通过源码揭秘

前言JWT是目前最为流行的接口认证方案之一&#xff0c;有关JWT协议的详细内容&#xff0c;请参考&#xff1a;https://jwt.io/introduction今天分享一下在使用JWT在项目中遇到的一个问题&#xff0c;主要是一个协议的细节&#xff0c;非常容易被忽略&#xff0c;如果不是自己遇…

GPS实验二:GPS接收机的使用

一、实习目的 1、了解GPS接收机的基本结构; 2、掌握GPS接收机的一般操作方法。 二、实习内容 1、了解GPS接收机的外观及主要构成单元; 2、学习GPS接收机的安装及静态测量的操作方法; 3、了解GPS接收机工作时的基本状态信息。 三、实习地点 选择视野开阔的场所,视场…

Android之解决CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+RecyclerView里面再嵌套RecyclerView滑动颤抖问题

1 问题 主页面用的是这种结构 CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+RecyclerView(里面再嵌套RecyclerView,然后这个RecyclerView再嵌套一个RecyclerView)上下滑动在AppBarLayout下面出现页面上下颤抖问题 2 分析 我的主页代码如下 <?xml versio…

文件传输基础——Java IO流

一、文件的编码 1 package com.study.io;2 3 4 /**5 * 测试文件编码6 */7 public class EncodeDemo {8 9 /** 10 * param args 11 * throws Exception 12 */ 13 public static void main(String[] args) throws Exception { 14 String s&quo…

keepalived实现nginx的高可用(双主模型)

实验环境&#xff1a;RS1&#xff1a;rip&#xff08;172.16.125.7&#xff09;&#xff0c;安装httpd软件包&#xff1b;RS2&#xff1a;rip&#xff08;172.16.125.8&#xff09;&#xff0c;安装httpd软件包&#xff1b;director1&#xff08;7-1.lcs.com&#xff09;&#…

【必懂C++】第一个程序当然是HelloWorld呀 01

作者简介 作者名&#xff1a;1_bit 简介&#xff1a;CSDN博客专家&#xff0c;2020年博客之星TOP5&#xff0c;蓝桥签约作者。15-16年曾在网上直播&#xff0c;带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息&#xff0c;迷茫的你会找到答案。系列教程将会…

实现html5音乐的自动播放,html5中audio实现播放列表和自动播放

var count 43; //一共多少MP3文件var index 18.mp3; // 初始化播放那个文件window.onload function(){var audio new Audio();audio.preload true;audio.controls true;audio.loop false;audio.src index;document.body.appendChild(audio);audio.play();audio.addEven…

GPS实验三:GPS接收机野外数据采集

一、实习目的 1、掌握GPS接收机的使用方法; 2、学会量取天线高 3、掌握选点和埋设标志的原则 二、实习内容 1、了解GPS接收机的外观及主要构成单元; 2、学习GPS接收机的安装及静态测量的操作方法; 3、了解GPS接收机工作时的基本状态信息。 三、实习地点 选择视野开阔的…

打造操作系统根社区 统信Deepin屹立于浪潮之颠

如果把芯片比作信息系统的大脑的话&#xff0c;那么操作系统毫无疑问就是信息系统的灵魂。在过去几十年里&#xff0c;我国信息产业饱受“缺芯少魂”的困扰&#xff0c;国内市场基本被微软、谷歌、苹果、IBM、红帽等外商垄断。诚然&#xff0c;一些国内厂商推出过基于Fedora、u…

Androd之在图片右上角显示红色圆圈里面数字提醒

1 需求 在图片右上角显示红色圆圈里面数字提醒 2 效果如图 3 关键代码 item_loca.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_wid…

Bean

Bean spring中把一切配置到IOC容器(其实就是那个xml文件)里面的对象都称之为bean。 转载于:https://www.cnblogs.com/Renyi-Fan/p/7780935.html

html原样输出html代码

<xmp>********</xmp> 在网页上显示html代码标记<xmp></xmp>有时我们会将html代码显示在网页上,直接写会有问题, 如果我们将要显示的html代码放在<xmp></xmp>中就可以实现转载于:https://www.cnblogs.com/sign-ptk/p/5668442.html

ArcGIS实验教程——实验二十二:空间数据符号化

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 一、实验描述 空间数据可视化是通过地图语言实现的,地图语言由符号、色彩和文字注记组成。 地图符号由形状不同、大小不一、色彩有别的图形和文字组成,是地图语言的图解部分。 符号化是以图形方…

【必懂C++】C++可真是个“固执”的小可爱 02

作者简介 作者名&#xff1a;1_bit 简介&#xff1a;CSDN博客专家&#xff0c;2020年博客之星TOP5&#xff0c;蓝桥签约作者。15-16年曾在网上直播&#xff0c;带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息&#xff0c;迷茫的你会找到答案。系列教程将会…

html td显示隐藏,显示/隐藏Html TR/TD

如何从html表中显示/隐藏任何tr/td&#xff1f; 我应该可以隐藏表格中显示的任何tr/td。显示/隐藏Html TR/TDCountryUSASwedenNorwayInventory ID$123.23Cost$312.21Descriptionthis is a descriptionCSS&#xff1a;#tableEditor {position: absolute;left: 20px;top: 20px;pa…

Flutter之window系统下配置开发环境以及在Android Studio里面运行hello word

1 、window系统配置Flutter开发环境 1&#xff09;下载Flutter的SDK 如果电脑安装了Git&#xff0c;直接到https://github.com/flutter/flutter/这里下载&#xff0c;但是需要翻墙 git clone https://github.com/flutter/flutter.git 或者到lutter官网下载 https://flutter.d…

java1.8--改进的接口

关于接口&#xff0c;每天的编码都在写&#xff0c;就不多说了。这里对比下接口&#xff0c;抽象类&#xff0c;类3者的关系&#xff1a; 1&#xff09;&#xff0c;接口是一种规范&#xff0c;就是告诉外界这个东东可以做什么。 2&#xff09;&#xff0c;抽象类是一种模板&am…