题意:

给你一个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【建图建图】的更多相关文章

  1. Codeforces Gym101170I:Iron and Coal(建多幅图+多次BFS)***

    题目链接 题意 有n个点,其中有m个点是铁矿,k个点是煤,从1号点出发,你可以派一些士兵跑向不同的点,问占领至少一个铁矿和一个煤的时候,最少需要占领多少个点. 思路 建两幅图,其中一幅是正向边,一幅是 ...

  2. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

  3. UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

  4. 使用axes函数在matlab绘图中实现图中图的绘制

    使用axes函数在matlab绘图中实现图中图的绘制 有时为了对细节进行详细说明,需要在一个较大坐标轴上绘制一个小图来对局部进行放大以阐述结果. 这可以通过调用axes函数实现. 下面通过绘制 y=1 ...

  5. Echarts-柱状图柱图宽度设置

    先看两张图 图中柱图只需要设置series中的坐标系属性barWidth就可以, 这种图柱状图,折叠柱状图都适应 eg: /** * 堆积柱状图 * @param xaxisdata x轴:标签(数组 ...

  6. C# 绘制统计图(柱状图, 折线图, 扇形图)【转载】

    统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的:这里我们用 ...

  7. C# 绘制统计图(柱状图, 折线图, 扇形图)

    统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的:这里我们用 ...

  8. Asp.net 用 Graphics 统计图(柱状图, 折线图, 扇形图)

    统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的:这里我们用 ...

  9. UML九种图-包图、类图

    UML九种图-包图.类图 一.包 (一)相关概念: 1.包: 一个包=一层=一个命名空间=一个文件夹 2.包的命名: 简单名:王老二 路径名:中国.河北省.廊坊市.廊坊师范学院.信息技术提高班.九期班 ...

  10. 如何增强ArcGIS插值图出图效果

    如何增强ArcGIS插值图出图效果 by 李远祥 在一些科研领域,经常会遇到使用插值的方式进行处理,并生成最终的插值图.插值图在ArcGIS里面非常容易生成,只要具备了采用点数据,通过ArcToolB ...

随机推荐

  1. STL 笔记(二) 关联容器 map、set、multimap 和 multimap

    STL 关联容器简单介绍 关联容器即 key-value 键值对容器,依靠 key 来存储和读取元素. 在 STL 中,有四种关联容器,各自是: map 键值对 key-value 存储,key 不可 ...

  2. spring MVC使用Interceptor做用户登录判断

    在任何一个项目中,我们必须要用到的就是用户登录,那么就少不了用户是否登录的判断,如果我们每一个请求都要去做一次判断,那么就会变得很麻烦,但我们复制粘贴的时候我们就要考虑我们的代码写的是不是有问题,是不 ...

  3. C语言连接MySQL(codeblocks)

    #include <stdio.h> #include <winsock2.h> #include <mysql.h> /*数据库连接用宏*/ #define HO ...

  4. WPF DataGrid 获取选中 一行 或者 多行

    WPF中DataGrid使用时,需要将其SelectedItem转换成DataRowView进行操作 然而SelectedItem 与SelectedItems DataGrid的SelectionU ...

  5. Pattern: API Gateway / Backend for Front-End

    http://microservices.io/patterns/apigateway.html Pattern: API Gateway / Backend for Front-End Contex ...

  6. HDU 6119 小小粉丝度度熊 【预处理+尺取法】(2017"百度之星"程序设计大赛 - 初赛(B))

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  7. YTU 2444: C++习题 对象转换

    2444: C++习题 对象转换 时间限制: 1 Sec  内存限制: 128 MB 提交: 914  解决: 581 题目描述 定义一个Teacher(教师)类(教师号,姓名,性别,薪金)和一个St ...

  8. hdu 1286 找新朋友(欧拉函数)

    题意:欧拉函数 思路:欧拉函数 模板,代码略.

  9. Intel® Media SDK Media Samples Linux 学习笔记(转)

    最近折腾intel media sdk,主要硬件平台是在HD4600的核显上进行测试,intel media sdk是intel提供的一种基于核显的硬件编解码的解决方案,之前已经有使用ffmpeg进行 ...

  10. Superprime Rib

    链接 分析:满足题目条件的必然是1,2,3,5,7,9这几个数字的组合,DFS按位进行即可,边组合边判断是否合法. /* PROB:sprime ID:wanghan LANG:C++ */ #inc ...