HDU:4185-棋盘游戏
棋盘游戏
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/32768 K (Java/Others)
Problem Description
小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才可以放,小希还是很轻松的解决了这个问题(见下图)注意不能放车的地方不影响车的互相攻击。
所以现在Gardon想让小希来解决一个更难的问题,在保证尽量多的“车”的前提下,棋盘里有些格子是可以避开的,也就是说,不在这些格子上放车,也可以保证尽量多的“车”被放下。但是某些格子若不放子,就无法保证放尽量多的“车”,这样的格子被称做重要点。Gardon想让小希算出有多少个这样的重要点,你能解决这个问题么?
Input
输入包含多组数据,
第一行有三个数N、M、K(1
Output
对输入的每组数据,按照如下格式输出:
Board T have C important blanks for L chessmen.
Sample Input
3 3 4
1 2
1 3
2 1
2 2
3 3 4
1 2
1 3
2 1
3 2
Sample Output
Board 1 have 0 important blanks for 2 chessmen.
Board 2 have 3 important blanks for 3 chessmen.
解题心得:
- 一个二分匹配问题,把行和列单独出来,每一行中该行与可以放棋子的列形成匹配,因为每一行每一列只能放一个棋子,所以就是求一个最大二分匹配
- 然后就是求重要位置,刚开始还以为有什么规律,找了半天,真的找不出来,然后跑暴力,枚举每一个可以放棋子点,如果将该点去掉最大匹配变小了,那么这个点就是一个重要点了。很无语…….
#include<bits/stdc++.h>
using namespace std;
const int maxn = 110;
vector <int> ve[maxn];
int match[maxn];
bool vis[maxn],maps[maxn][maxn];
int n,m,k;
void init()
{
memset(maps,0,sizeof(maps));
memset(match,-1,sizeof(match));
for(int i=0; i<maxn; i++)
ve[i].clear();
for(int i=1; i<=k; i++)
{
int a,b;
scanf("%d%d",&a,&b);
maps[a][b] = true;
ve[a].push_back(b);
}
}
bool dfs(int x)
{
for(int i=0; i<ve[x].size(); i++)
{
int v = ve[x][i];
if(!vis[v] && maps[x][v])
{
vis[v] = true;
if(match[v] == -1 || dfs(match[v]))
{
match[v] = x;
return true;
}
}
}
return false;
}
int hunger()
{
int sum_chessmen = 0;
for(int i=1; i<=n; i++)
{
memset(vis,0,sizeof(vis));
if(dfs(i))
sum_chessmen++;
}
return sum_chessmen;
}
int main()
{
int t = 1;
while(cin>>n>>m>>k)
{
int ans = 0;
init();
int ans1 = hunger();//先跑一个原本棋盘的二分匹配
for(int i=1;i<=n;i++)
{
for(int j=0;j<ve[i].size();j++)
{
memset(match,-1,sizeof(match));
int y = ve[i][j];
int x = i;
maps[x][y] = false;//枚举去掉每一个本可以放置的点,然后判断是否二分匹配出来的答案变小了
int ans2 = hunger();
maps[x][y] = true;
if(ans2 < ans1)
ans++;
}
}
printf("Board %d have %d important blanks for %d chessmen.\n",t++,ans,ans1);
}
return 0;
}
HDU:4185-棋盘游戏的更多相关文章
- HDU 4185 ——Oil Skimming——————【最大匹配、方格的奇偶性建图】
Oil Skimming Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- hdu 1281 棋盘游戏
http://acm.hdu.edu.cn/showproblem.php?pid=1281 棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- HDU 4185
http://acm.hdu.edu.cn/showproblem.php?pid=4185 两个挨着的'#'可以配成一对,求最多能配成几对 挨着的'#'就连边,然后求一次最大匹配,答案是最大匹配除以 ...
- (匹配)Oil Skimming -- hdu --4185
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4185 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- 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 棋盘游戏 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大的棋盘,要在里面放尽量多的“车”,求最多能放的车的个数,和为了放最多的车有多 ...
随机推荐
- python 3 学习字符串和编码
字符串和编码 阅读: 895464 字符编码 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字 ...
- (转)nginx应用总结(2)--突破高并发的性能优化
原文:http://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并发导致的性能瓶颈问题. ...
- (转)通过MySQL复制线程SQL_Thread加快增量恢复binlog
数据回档常常是使用全量备份+binlog增量实现的.而数据量很大的情况下,增量恢复binlog一直是一个苦恼的问题,因为恢复binlog速度十分慢,并且容易出错. 恢复binlog文件一般有两种方法: ...
- [干货分享]AXURE整套高保真UI框架和元件组(白色风格)
写在前面 强烈建议开始之前阅读以下第一篇高保真UI框架的前面部分,以了解设计思想,这篇文章不再重复介绍: AXURE-整套可复用的高保真元件和框架之暗黑风格 本次共享模板的UI规范 注:由于篇幅问 ...
- 快速开启MySQL慢日志查询的方法
MySQL慢日志查询对于很多刚接触MySQL数据的新人来说比较陌生,下面就为您介绍MySQL慢日志查询的用法和好处,供您参考. mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是 ...
- Webstorm 激活
注册时,在打开的License Activation窗口中选择“License server”,在输入框输入下面的网址: http://idea.iteblog.com/key.php 点击:Acti ...
- Eclipse - 安装语言包
Open the install wizard with 'Help' > 'Install new software...' add the Babel p2 repository: http ...
- 如何优化Mysql执行查询数据的速度
在项目中数据量小的情况下使用like查询速度还行,但是随着数据一天一天增加,再使用like进行模糊查询的时候速度上就会显得比较慢,现提供两套解决方案: 问题: 使用like查询效率很慢 select ...
- 原创 html动态表格
<table id="opttb"> <asp:Repeater ID="tempOptions" runat="server&qu ...
- iOS 应用架构 (二)
iOS 客户端应用架构看似简单,但实际上要考虑的事情不少.本文作者将以系列文章的形式来回答 iOS 应用架构中的种种问题,本文是其中的第二篇,主要讲 View 层的组织和调用方案.上篇主要讲 View ...