POJ2446【建图建图】
题意:
给你一个n*n的矩阵,然后再给你几个坑,然后问你能否被1*2的长方形给覆盖;
- -弱知道了是二分匹配的做法,但是弱还是不会转化,又是在建图上GG了
分析:
从国际象棋的那个黑白色理解,这是一张二分图(好像非常有道理)
建图:由于是1*2的纸片覆盖,那么这个区域的两个点的(i+j)必然是一个奇数和一个偶数。
先搞好点,我们分别给奇数、偶数点 依次从1开始标号,相邻的就是有一条边;
这波建图好是经典;
一般建图弱感觉就是:先搞点,再建图,有些还会再初始化一波;
然后就是求一下最大匹配,
如果最大匹配+K=N*M就输出”YES”,否则就是”NO”
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<map>
#include<stack>
#include<algorithm>
using namespace std;
#define N 1500
int ma[N][N];
int ls[N][N];
int n,m,t;
int cx[N];
int cy[N];
int ji,ou;
bool vis[N];
int findpath(int u)
{
for(int i=1;i<ou;i++)
{
if(!vis[i]&&ma[u][i])
{
vis[i]=1;
if(cy[i]==-1||findpath(cy[i]))
{
cx[u]=i;
cy[i]=u;
return 1;
}
}
}
return 0;
}
void solve()
{
memset(cx,-1,sizeof(cx));
memset(cy,-1,sizeof(cy));
int ans=0;
for(int i=1;i<ji;i++)
{
memset(vis,0,sizeof(vis));
ans+=findpath(i);
}
ans*2==(m*n-t)?printf("YES\n"):printf("NO\n");
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
scanf("%d",&t);
memset(ls,0,sizeof(ls));
for(int i=0;i<t;i++)
{
int x,y;
scanf("%d%d",&x,&y);
ls[y][x]=-1;
}
ji=ou=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(ls[i][j]!=-1)
{
if((i+j)%2==0)
ls[i][j]=ji++;
else
ls[i][j]=ou++;
}
}
}
memset(ma,0,sizeof(ma));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(ls[i][j]!=-1&&(i+j)%2==1)
{
if(ls[i-1][j]>=1)
ma[ls[i-1][j]][ls[i][j]]=1;
if(ls[i+1][j]>=1)
ma[ls[i+1][j]][ls[i][j]]=1;
if(ls[i][j-1]>=1)
ma[ls[i][j-1]][ls[i][j]]=1;
if(ls[i][j+1]>=1)
ma[ls[i][j+1]][ls[i][j]]=1;
}
}
}
solve();
}
return 0;
}
[ls[i][j]]=1;
}
}
}
solve();
}
return 0;
}
POJ2446【建图建图】的更多相关文章
- Codeforces Gym101170I:Iron and Coal(建多幅图+多次BFS)***
题目链接 题意 有n个点,其中有m个点是铁矿,k个点是煤,从1号点出发,你可以派一些士兵跑向不同的点,问占领至少一个铁矿和一个煤的时候,最少需要占领多少个点. 思路 建两幅图,其中一幅是正向边,一幅是 ...
- 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战
发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...
- UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战
发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...
- 使用axes函数在matlab绘图中实现图中图的绘制
使用axes函数在matlab绘图中实现图中图的绘制 有时为了对细节进行详细说明,需要在一个较大坐标轴上绘制一个小图来对局部进行放大以阐述结果. 这可以通过调用axes函数实现. 下面通过绘制 y=1 ...
- Echarts-柱状图柱图宽度设置
先看两张图 图中柱图只需要设置series中的坐标系属性barWidth就可以, 这种图柱状图,折叠柱状图都适应 eg: /** * 堆积柱状图 * @param xaxisdata x轴:标签(数组 ...
- C# 绘制统计图(柱状图, 折线图, 扇形图)【转载】
统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的:这里我们用 ...
- C# 绘制统计图(柱状图, 折线图, 扇形图)
统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的:这里我们用 ...
- Asp.net 用 Graphics 统计图(柱状图, 折线图, 扇形图)
统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的:这里我们用 ...
- UML九种图-包图、类图
UML九种图-包图.类图 一.包 (一)相关概念: 1.包: 一个包=一层=一个命名空间=一个文件夹 2.包的命名: 简单名:王老二 路径名:中国.河北省.廊坊市.廊坊师范学院.信息技术提高班.九期班 ...
- 如何增强ArcGIS插值图出图效果
如何增强ArcGIS插值图出图效果 by 李远祥 在一些科研领域,经常会遇到使用插值的方式进行处理,并生成最终的插值图.插值图在ArcGIS里面非常容易生成,只要具备了采用点数据,通过ArcToolB ...
随机推荐
- 远程唤醒UP Board
前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文使用Markdown写成,为获得更好的阅读体验和正常的图片.链接,请访问我的博客: http://www.cnblogs.co ...
- 利用卷积神经网络(CNN)构造社区问答系统
/* 版权声明:能够随意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 ...
- 不是技术牛人,如何拿到国内IT巨头的Offer--转
http://blog.csdn.net/lsldd/article/details/13506263 不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人,N ...
- IE浏览器部分版本不支持background-size属性问题
background-size是CSS3新增的属性,但是IE8以下还是不支持,可以通过滤镜来实现这样的一个效果 background-size:contain; // 缩小图片来适应元素的尺寸(保持像 ...
- Freemarker 中的哈希表(Map)和序列(List)
freemarlker中的容器类型有: 哈希表:是实现了TemplateHashModel或者TemplateHashModelEx接口的java对象,经常使用的实现类是SimpleHash,该类实现 ...
- 闭包传参 余额计算 钩子hook 闭包中的this JavaScript 钩子
闭包传参 余额计算 钩子hook 小程序 a=function(e){console.log(this)}() a=function(e){console.log(this)}() VM289 ...
- GET和POST解析
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP ...
- 【转】idea激活搭建授权服务器
1.下载软件:磁力链接: magnet:?xt=urn:btih:2289E4F8CEB346AC44E54C8C0DA706CC537301AA 复制磁力链接地址 magnet:?xt=urn:bt ...
- 浏览器和服务器 对post get请求 url长度限制
1. URL长度限制 2. Post数据的长度限制 3. Cookie的长度限制 1. GET URL长度限制 在Http1.1协议中并没有提出针对URL的长度进行限制,RFC协议里面是这样描述的, ...
- React中Transition的作用
/** * `Transaction` creates a black box that is able to wrap any method such that * certain invarian ...