原文链接http://www.cnblogs.com/zhouzhendong/p/8232649.html


题目传送门 - POJ1469


题意概括

  在一个大矩阵中,有一些障碍点。

  现在让你用1*2的小矩形覆盖非障碍点,要求不覆盖到障碍点并且不重复覆盖,问是否可以覆盖所有非障碍点。


题解

  本题几乎是裸题。

  首先注意读入的表示障碍点的二元组(x,y)中y是行,x是列。

  这个毒性深重<差评>

  然后考虑算法。读者可以参考笔者的前一篇博客。

  对于相邻的非障碍点我们来回都建边。然后我们给原图按照到某一个点的曼哈顿距离的奇偶性黑白染色,发现黑的只能连向白的,白的也只可以连向黑的。于是这就是一个二分图。

  然后我们跑一炮匈牙利。

  由于连出的边是来回的,所以相当于重复计算了一次,即最大匹配数翻倍了。

  于是就恰好变成了覆盖非障碍点的最大数。直接和障碍点的总数比较即可。

  注意本题用二维数组存图会TLE(我会TLE),改成数组模拟链表就过去了。<差评++>


代码

#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
using namespace std;
const int N=35,K=1100;
struct Gragh{
int cnt,y[K*4],nxt[K*4],fst[K];
void clear(){
cnt=0;
memset(fst,0,sizeof fst);
}
void add(int a,int b){
y[++cnt]=b,nxt[cnt]=fst[a],fst[a]=cnt;
}
}g;
int m,n,k,cnt,pl[N][N],tn[N][N],match[K],vis[K];
bool check(int x,int y){
return 1<=x&&x<=m&&1<=y&&y<=n&&!pl[x][y];
}
bool Match(int x){
for (int i=g.fst[x];i;i=g.nxt[i]){
int y=g.y[i];
if (!vis[y]){
vis[y]=1;
if (!match[y]||Match(match[y])){
match[y]=x;
return 1;
}
}
}
return 0;
}
int hungary(){
int res=0;
memset(match,0,sizeof match);
for (int i=1;i<=cnt;i++){
memset(vis,0,sizeof vis);
if (Match(i))
res++;
}
return res;
}
int main(){
while (~scanf("%d%d%d",&m,&n,&k)){
memset(pl,0,sizeof pl);
memset(tn,0,sizeof tn);
for (int i=1,a,b;i<=k;i++)
scanf("%d%d",&b,&a),pl[a][b]=1;
cnt=0;
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
if (!pl[i][j])
tn[i][j]=++cnt;
g.clear();
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++){
if (pl[i][j])
continue;
if (check(i,j-1))
g.add(tn[i][j],tn[i][j-1]);
if (check(i,j+1))
g.add(tn[i][j],tn[i][j+1]);
if (check(i-1,j))
g.add(tn[i][j],tn[i-1][j]);
if (check(i+1,j))
g.add(tn[i][j],tn[i+1][j]);
}
puts((hungary()==cnt)?"YES":"NO");
}
return 0;
}

  

POJ1469 COURSES 二分图匹配 匈牙利算法的更多相关文章

  1. HDU 5943 Kingdom of Obsession 【二分图匹配 匈牙利算法】 (2016年中国大学生程序设计竞赛(杭州))

    Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  2. USACO 4.2 The Perfect Stall(二分图匹配匈牙利算法)

    The Perfect StallHal Burch Farmer John completed his new barn just last week, complete with all the ...

  3. Codevs 1222 信与信封问题 二分图匹配,匈牙利算法

    题目: http://codevs.cn/problem/1222/ 1222 信与信封问题   时间限制: 1 s   空间限制: 128000 KB   题目等级 : 钻石 Diamond 题解 ...

  4. (转)二分图匹配匈牙利算法与KM算法

    匈牙利算法转自于: https://blog.csdn.net/dark_scope/article/details/8880547 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名 ...

  5. BZOJ1059 [ZJOI2007]矩阵游戏 二分图匹配 匈牙利算法

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1059 题意概括 有一个n*n(n<=200)的01矩阵,问你是否可以通过交换整行和整列使得左 ...

  6. 网络流24题 第三题 - CodeVS1904 洛谷2764 最小路径覆盖问题 有向无环图最小路径覆盖 最大流 二分图匹配 匈牙利算法

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - CodeVS1904 题目传送门 - 洛谷2764 题意概括 给出一个有向无环图,现在请你求一些路径,这些路径 ...

  7. 矩阵游戏|ZJOI2007|BZOJ1059|codevs1433|luoguP1129|二分图匹配|匈牙利算法|Elena

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩 ...

  8. BZOJ 1191 [HNOI2006]超级英雄Hero:二分图匹配 匈牙利算法

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1191 题意: 有m道题,每答对一题才能接着回答下一个问题. 你一道题都不会,但是你有n个“ ...

  9. [bzoj]1059矩阵游戏<二分图匹配*匈牙利算法>

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1059 初见此题,我觉得这是水题,我认为只要每一行和每一列至少存在一个黑格就可以出现对角线, ...

随机推荐

  1. python基础--压缩文件

    1)怎么压缩备份多个文件 使用zipfile 创建压缩文件 查看信息 解压缩 # 创建 import zipfile # os.chdir('test') my_zip = zipfile.ZipFi ...

  2. python----动态规划

    不能放弃治疗,每天都要进步!! 什么时候使用动态规划呢? 1. 求一个问题的最优解 2. 大问题可以分解为子问题,子问题还有重叠的更小的子问题 3. 整体问题最优解取决于子问题的最优解(状态转移方程) ...

  3. PHP项目笔记

    1.controller输出前端传来的值:var_dump($_POST['oid']); 2.var_dump($_POST['oid']);die:

  4. 移动端判断ios还是android终端

    <script> //判断ios还是android终端       var u = navigator.userAgent;       var isAndroid = u.indexOf ...

  5. Confluence 6 反向跟踪

    当反向跟踪(Trackback )被启用后,在任何你链接到可用启用自动发现功能的外部页面中,Confluence 将会自动发送一个方向跟踪 ping,这个 ping 能通知链接的页面有了内容改变. C ...

  6. 使用 Apache 来限制访问 Confluence 6 的管理员界面

    限制特定的 IP 地址可以访问管理员后台 Confluence 的管理员控制台界面对整个应用来说是非常重要的,任何人访问 Confluence 的控制台不仅仅可以访问 Confluence 安装实例, ...

  7. Confluence 6 你模板中可用的对象

    包含宏正文和参数,下面的 Confluence 对象在宏中可用: $body 宏的正文(如果宏有正文的话) String $paramfoo, $parambar, ...$param<name ...

  8. npm install Install error: Unexpected token < in JSON at position 35问题解决

    解决方案 rm package-lock.json worked.

  9. 基于Form组件实现的增删改和基于ModelForm实现的增删改

    一.ModelForm的介绍 ModelForm a. class Meta: model, # 对应Model的 fields=None, # 字段 exclude=None, # 排除字段 lab ...

  10. 纯CSS3超酷3D旋转立方体动画特效

    简要教程 这是一款神奇的纯 CSS3 立方体动画特效插件.使用CSS3来制作动画效果已经成为WEB前端开发的一种时尚,从简单的颜色和尺寸动画,到复杂的旋转.翻转动画, CSS3 展现了它无穷的魅力.使 ...