hdu 1281 棋盘游戏
http://acm.hdu.edu.cn/showproblem.php?pid=1281
棋盘游戏
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3096 Accepted Submission(s): 1827

1 2
1 3
2 1
2 2
3 3 4
1 2
1 3
2 1
3 2
Board 2 have 3 important blanks for 3 chessmen.
题目分析:
1.放尽量多的车,则是求最大匹配
将横坐标放入X集合中,纵坐标放在Y集合中构成一个二分图坐标为(x,y)的位置放车,
则x与y之间有一条连线,车不能互相攻击那么没两条线之间就不能有公共的端点,
即转化为求其最大匹配
2.求重要点个数
将所给的能放车的点一个一个删除,之后求最大匹配,如果最大匹配小于没删之前的最大匹配
那么这个点就是一个重要点
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#define N 110 using namespace std; int G[N][N], vis[N], used[N];
int n, m, k; struct st
{
int a, b;
} node[N * N]; bool Find(int u)
{
int i;
for(i = ; i <= m ; i++)
{
if(!vis[i] && G[u][i])
{
vis[i] = ;
if(!used[i] || Find(used[i]))
{
used[i] = u;
return true;
}
}
}
return false;
} int solve()
{
int num = , i;
memset(used, , sizeof(used));
for(i = ; i <= n ; i++)
{
memset(vis, , sizeof(vis));
if(Find(i))
num++;
}
return num;
} int main()
{
int i, p = ;
while(~scanf("%d%d%d", &n, &m, &k))
{
p++;
memset(G, , sizeof(G));
for(i = ; i <= k ; i++)
{
scanf("%d%d", &node[i].a, &node[i].b);
G[node[i].a][node[i].b] = ;
}
int ans = solve();
int t = ;
for(i = ; i <= k ; i++)
{
G[node[i].a][node[i].b] = ;
if(ans > solve())
t++;
G[node[i].a][node[i].b] = ;
}
printf("Board %d have %d important blanks for %d chessmen.\n", p, t, ans);
}
return ;
}
hdu 1281 棋盘游戏的更多相关文章
- hdu 1281 棋盘游戏(二分匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) M ...
- HDU 1281——棋盘游戏——————【最大匹配、枚举删点、邻接表方式】
棋盘游戏 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- hdu 1281棋盘游戏(二分匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘, ...
- HDU 1281 - 棋盘游戏 - [二分图最大匹配]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1281 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- HDU 1281 棋盘游戏 【二分图最大匹配】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1281 题意概括: 有N*M大的棋盘,要在里面放尽量多的“车”,求最多能放的车的个数,和为了放最多的车有多 ...
- hdu 1281 棋盘游戏 (二分匹配)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu 1281 棋盘游戏(二分图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 每行每列作为节点,给可以放车的点将对应的行列连边,最多可放置的车即为建二分图后的最大匹配,跑一边 ...
- HDU——1281 棋盘游戏
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- (step6.3.5)hdu 1281(棋盘游戏——二分图的完美匹配)
题目大意:本体是中文题.读者可以直接在OJ上看 解题思路: 1)完美匹配:所有的端点都是匹配点 2)对于二分图的完美匹配,我们需要用一个数组来存储匹配点.(而二分图的其他问题(我们则可以直接使用变量来 ...
随机推荐
- MVC 中使用扩展方法
扩展方法(Extension Method)是给那些不是你拥有.因而不能直接修改的类添加方法的一种方便的办法. 一.使用扩展方法 1.定义一个购物车的类-ShoppingCart using Sys ...
- bootstrapValidator对于隐藏域验证和程序赋值即时验证的问题
问题1: 如下代码: <input type="hidden" name="productId"/> $("#addForm") ...
- css新增UI样式
1.圆角 border-radius <style> .box{width:200px;height:300px;border:1px solid #000;border-radius:1 ...
- 深入理解require/include的顺序
在大型的Web项目中, include_path是一个模块化设计的根本中的根本(当然,现在也有很多基于autoload的设计, 这个不影响本文的探讨), 但是正是因为include_path, 经常会 ...
- poj2387 Til the Cows Come Home
解题思路:最短路的模板题,注意一个细节处理即可. 见代码: #include<cstdio> #include<cstring> #include<algorithm&g ...
- HDU1026 Ignatius and the Princess I
解题思路:打印路径是关键,细节处理见代码. #include<cstdio> #include<cstring> #include<algorithm> using ...
- ORACLE学习笔记 索引和约束
/*** 约束 ***/ * 如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约 束,但如果某个约束作用于多个字段, 必须在表级定义约束* 在定义约束时可以通过CONSTRA ...
- 查看mysql库大小,表大小,索引大小
查看所有库的大小 mysql> use information_schema; Database changed mysql> selectconcat(round(sum(DATA_LE ...
- unity, 在保持场景根节点Transform不变且Hierarchy结构不变的前提下整体旋转场景
比如我们摆出下面结构: 其Hierarchy如下: 其中根节点road的Transform是如下干净的原始状态: 现在想保持road的Hierarchy和Transform都不变的情况下将road旋转 ...
- 别人的的MYSQL学习心得(十五) 日志
我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...