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 ...
随机推荐
- 【转载】Http协议与TCP协议简单理解后续
写了这么长时间的代码,发现自己对TCP/IP了解的并不是很透彻.虽然会用C#的HttpClient类来进行网络编程,也可以使用Chrome的开发者工具来检测每一次的HTTP请求的报文头与报文体,也知道 ...
- JavaScript 刚開始学习的人应知的 24 条最佳实践
原文:24 JavaScript Best Practices for Beginners (注:阅读原文的时候没有注意公布日期,认为不错就翻译了,翻译到 JSON.parse 那一节认为有点不正确路 ...
- Beijing Bus
Search: http://bjgj.aibang.com:8899 https://github.com/sp-chenyang/bus https://github.com/leavind/Co ...
- apk程序查找方法调用
有android killer,现在ida对android的支持等一些方便工具,此篇(关于搜索和修改代码)废弃. 没有好的调试工具下 常用插代码(如果怕影响寄存器值,可以将.locals xxx改多几 ...
- ITOO高校云平台之考评系统项目总结
高校云平台,将云的概念引入到我的生活, 高校云平台主要是以各大高校的业务为基础设计开发,包含权限系统,基础系统.新生入学系统.考评系统,成绩系统.选课系统,视频课系统.3月份參加云平台3.0的开发,至 ...
- POJ 2482 Stars in Your Window(线段树+扫描线)
题目链接 非常不容易的一道题,把每个点向右上构造一个矩形,将问题转化为重合矩形那个亮度最大,注意LL,注意排序. #include <cstdio> #include <cstrin ...
- POJ 1703 Find them, Catch them(种类并查集)
题目链接 这种类型的题目以前见过,今天第一次写,具体过程,还要慢慢理解. #include <cstring> #include <cstdio> #include <s ...
- Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go? | Hacker News https://news.ycombinator.com/i ...
- TButton.Repaint的执行过程
测试,在按钮事件里写上 Button1.Repaint;(包括TWinControl.Invalidate;和procedure TWinControl.Update;两个函数,会被TButton所继 ...
- springboot实现定时任务的两种方式
方式一:在springboot启动类上添加@EnableScheduling注解,然后创建具体的任务类,在方法上添加@Scheduled注解,并指明执行频率即可.如下: @Componentpubli ...