题目描述 Description

一个矩形可以划分成M*N个小正方形,其中有一些小正方形不能使用。一个多米诺骨牌占用两个相邻的小正方形。试问整个区域内最多可以不重叠地放多少个多米诺骨牌且不占用任何一个被标记为无法使用的小正方形。

输入描述 Input Description

第一行有两个用空格隔开的正整数M和N。

第二行有一个正整数K,表示共有K个小正方形不能使用。输入数据保证K<=M*N。

以下K行每行有两个用空格隔开的数X和Y,表示第X行的第Y个小正方形不能使用。

输出描述 Output Description

输出最多能放多少个多米诺骨牌。

样例输入 Sample Input

3 3

2

1 1

2 2

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

对于30%的数据,M=1;

对于50%的数据,M<=2;

对于70%的数据,M<=3;

对于100%的数据,M<=50,N<=50。

/*
二分图匹配问题
问题是从一坨方格关系中选出尽量多的关系,使每个方格只选一次。
通过观察我们可以发现,横坐标加纵坐标是偶数的方格只能和奇数的方格匹配,所以就变成了二分图的匹配问题。
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define N 51
using namespace std;
int g[N][N],n,m,p,head[N*N],cnt;
int used[N*N],belong[N*N];
struct node{
int v,pre;
};node e[N*N*];
void add(int x,int y){
e[++cnt].v=y;
e[cnt].pre=head[x];
head[x]=cnt;
}
bool find(int i){
for(int j=head[i];j;j=e[j].pre){
if(!used[e[j].v]){
used[e[j].v]=;
if(!belong[e[j].v]||find(belong[e[j].v])){
belong[e[j].v]=i;
return true;
}
}
}
return false;
}
int main(){
freopen("jh.in","r",stdin);
scanf("%d%d%d",&n,&m,&p);
for(int i=;i<=p;i++){
int x,y;scanf("%d%d",&x,&y);
g[x][y]=;
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if((i+j&)||g[i][j])continue;
if(!g[i-][j]&&i->=)add((i-)*m+j,(i-)*m+j);
if(!g[i+][j]&&i+<=n)add((i-)*m+j,i*m+j);
if(!g[i][j-]&&j->=)add((i-)*m+j,(i-)*m+j-);
if(!g[i][j+]&&j+<=m)add((i-)*m+j,(i-)*m+j+);
}
}
int tot=;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if((i+j&)||g[i][j])continue;
memset(used,,sizeof(used));
if(find((i-)*m+j))tot++;
}
}
printf("%d",tot);
return ;
}

多米诺(codevs 3052)的更多相关文章

  1. codevs 3052 多米诺 二分图匹配

    /*codevs 3052 二分图匹配 把矩阵分两批 黑和白 且黑白不相交 这就构成了二分图的两部分 然后求最大匹配*/ #include<cstdio> #include<cstr ...

  2. [CareerCup] 6.2 Dominos on Chess Board 棋盘上的多米诺

    6.2 There is an 8x8 chess board in which two diagonally opposite corners have been cut off. You are ...

  3. 【Tsinghua OJ】多米诺骨牌(domino)问题

    (domino.c/cpp)[问题描述] 小牛牛对多米诺骨牌有很大兴趣,然而她的骨牌比较特别,只有黑色和白色的两种.她觉 得如果存在连续三个骨牌是同一种颜色,那么这个骨牌排列便是不美观的.现在她有n个 ...

  4. 省选训练赛第4场D题(多米诺骨牌)

    题目来自FZU2163 多米诺骨牌 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description Vasya很喜欢排多米诺 ...

  5. wikioi3052 多米诺

    题目描述 Description 一个矩形可以划分成M*N个小正方形,其中有一些小正方形不能使用.一个多米诺骨牌占用两个相邻的小正方形.试问整个区域内最多可以不重叠地放多少个多米诺骨牌且不占用任何一个 ...

  6. 【01背包】洛谷P1282多米诺骨牌

    题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...

  7. 多米诺骨牌放置问题(状压DP)

    例题: 最近小A遇到了一个很有趣的问题: 现在有一个\(n\times m\)规格的桌面,我们希望用\(1 \times 2\)规格的多米诺骨牌将其覆盖. 例如,对于一个\(10 \times 11\ ...

  8. P1282 多米诺骨牌 (背包变形问题)

    题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...

  9. [LeetCode] Push Dominoes 推多米诺骨牌

    There are N dominoes in a line, and we place each domino vertically upright. In the beginning, we si ...

随机推荐

  1. lianjie

    数值策划入门:如何确定游戏中的资源价值和定价http://bbs.gameres.com/thread_494366.html 一张常规的RPG游戏地图的制作流程 http://bbs.gameres ...

  2. JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解(转VIII)

    JVM本身就是一个java进程,一个java程序运行在一个jvm进程中.多个java程序同时运行就会有多个jvm进程.一个jvm进程有多个线程至少有一个gc线程和一个用户线程. JDK本身提供了很多方 ...

  3. hash-5.ConcurrentHashMap

    http://www.cnblogs.com/dolphin0520/p/3932905.html有时间细看

  4. jquery版悬浮模块demo

    在做在线客服时,代码就是按照该模块命名.现在,我要添加一个返回主页的功能,我觉得再复制一遍之前的代码,那个量有点多,如果我再添加一个功能,那个量会很多……现在我用创建对象字面量的方式来创建(其实我还想 ...

  5. web.xml 模板和Servlet版本

    最近没事干,写自己小项目(项目周期无限长.开发效率无限低)的时候,遇到web.xml的dtd声明不正确,这里罗列下从Eclipse里新建项目时,自动生成的web.xml,供以后遇到类似问题的时候进行参 ...

  6. vs2012+qt5.2.0环境搭建

    1.安装vs2012: 2.下载Qt 5.2.0 for Windows 32-bit(VS 2012, 579 MB) 和 Visual Studio Add-in 1.2.2for Qt5 注意: ...

  7. net-snmp的dateandtime数据类型

    net-snmp的dateandtime数据类型 2015/06/12 16:35:59 DateAndTime是Snmpv2中的一种数据类型,它主要提供了对日期时间的描述. 在开发一个snmp相关程 ...

  8. MySQL 编程的6个重要的技巧

    一.每一行命令都是用分号(;)作为结束 对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:   二. ...

  9. Unity3d运行时动态修改材质

    void Start () { const string MainTexVariableName = "_MainTex"; var renders = gameObject.Ge ...

  10. ios bitcode 机制对 dsym 调试文件的影响

    今天想试试用dsym和crash文件跟踪crash信息,可是一直返回如下信息: Thread name: Dispatch queue: com.apple.main-thread Thread Cr ...