HDU 1281 棋盘游戏 【二分图最大匹配】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1281
题意概括:
有N*M大的棋盘,要在里面放尽量多的“车”,求最多能放的车的个数,和为了放最多的车有多少个各自必须放车。
解题思路:
由“车”的规则可知,同一行或者同一列只能放一个车,可以放车的点作为边,对行和列最大匹配。然后遍历去点,如果去掉该点后最大匹配数减少,则说明那个点是不能去掉的点。
AC code:
#include <cstdio>
#include <istream>
#include <cstring>
#include <algorithm>
#define INF 0x3f3f3f3f
#define LL long long
using namespace std; const int MAXN = ; struct node
{
int x, y;
}cc[MAXN];
int mmp[MAXN][MAXN];
int linker[MAXN];
bool used[MAXN];
int N, M, K; bool Find(int u)
{
for(int v = ; v <= M; v++){
if(mmp[u][v] && !used[v]){
used[v] = true;
if(linker[v] == - || Find(linker[v])){
linker[v] = u;
return true;
}
}
}
return false;
} int Match()
{
int res = ;
memset(linker, -, sizeof(linker));
for(int u = ; u <= N; u++){
memset(used, false, sizeof(used));
if(Find(u)) res++;
}
return res;
} int main()
{
int uu, vv, cnt = , T_case = ;
while(~scanf("%d %d %d", &N, &M, &K)){
memset(mmp, , sizeof(mmp));
cnt = ;
T_case++;
for(int i = ; i < K; i++){
scanf("%d%d", &uu, &vv);
mmp[uu][vv] = ;
cc[i].x = uu;
cc[i].y = vv;
}
int ans = Match();
// puts("zjy");
int ans_node = ;
for(int i = ; i < K; i++){
mmp[cc[i].x][cc[i].y] = ;
if(ans > Match()) ans_node++;
mmp[cc[i].x][cc[i].y] = ;
} printf("Board %d have %d important blanks for %d chessmen.\n", T_case, ans_node, ans); }
return ;
}
HDU 1281 棋盘游戏 【二分图最大匹配】的更多相关文章
- HDU 1281 - 棋盘游戏 - [二分图最大匹配]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1281 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- HDU 1281——棋盘游戏——————【最大匹配、枚举删点、邻接表方式】
棋盘游戏 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- (step6.3.5)hdu 1281(棋盘游戏——二分图的完美匹配)
题目大意:本体是中文题.读者可以直接在OJ上看 解题思路: 1)完美匹配:所有的端点都是匹配点 2)对于二分图的完美匹配,我们需要用一个数组来存储匹配点.(而二分图的其他问题(我们则可以直接使用变量来 ...
- HDU 1281 棋盘游戏 (枚举+最大匹配)
<题目链接> Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单 ...
- hdu 1281 棋盘游戏(二分图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 每行每列作为节点,给可以放车的点将对应的行列连边,最多可放置的车即为建二分图后的最大匹配,跑一边 ...
- hdu 1281 棋盘游戏
http://acm.hdu.edu.cn/showproblem.php?pid=1281 棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- hdu 1281 棋盘游戏(二分匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) M ...
- D - 棋盘游戏 - HDU 1281(二分图匹配)
分析:先求出来最大匹配数,然后用匹配的点一个一个去除看看能否达到最大匹配,能的话就是关键点(很暴力啊),不过竟然才31ms ************************************** ...
- hdu 1281 棋盘游戏 (二分匹配)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
随机推荐
- Nginx通关攻略
Nginx是什么 没有听过Nginx?不要紧,一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unif ...
- Java - 线程封闭
保证并发安全性的方式有三: 不共享.不可变.同步 前两种方式相对第三种要简单一些. 这一篇不说语言特性和API提供的相关同步机制,主要记录一下关于共享的一些思考. 共享(shared),可以简单地认为 ...
- PLSQL-12.0.7.1837注册码
product code: 4vkjwhfeh3ufnqnmpr9brvcuyujrx3n3le serial Number:226959 password: xs374ca LicenseNumbe ...
- Oracle OCI操作UDT相关学习
1.Oracle数据类型 Oracle的数据类型如下 字符串类型 char nchar varchar2 nvarchar2 数值类型 int number integer smallint 日期类型 ...
- axios拦截器请求头携带token
转—— https://github.com/superman66/vue-axios-github/blob/master/src/http.js
- 部署基于python语言的WEB发布环境
一.部署说明 1.python语言介绍 python简介 2.实验环境 实验机器:Vmware虚拟机 8核10G 网卡:桥接模式 系统:centos7.5 防火墙:关闭 Selinux:关闭 网段:1 ...
- javascript判断一个元素是另外一个元素的子元素
javascript判断一个元素是另外一个元素的子元素用途有很多,最常用的就是当点击页面的空白处去执行某些操作,比如弹出层等. function isParent (obj,parentObj){ w ...
- sqlserver2008数据库文件降级为sqlserver2005文件
直接分离附加是不行的. 操作步骤如下: 在sqlserver2008企业管理器中 右键xx数据库->任务->生成脚本 弹出框中勾选 为所选数据库中的所有对象编写脚本 下一步 修改如下图片 ...
- Python基础-接口与归一化设计、抽象类、继承顺序、子类调用父类,多态与多态性
一.接口与归一化设计 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 由 ...
- Picasso通过URL获取--用户头像的圆形显示
1.设置布局属性: <ImageView android:scaleType="fitXY"/> 2.BitmapUtils类-- 得到指定圆形的Bitmap对象 pu ...