棋盘游戏 HDU1281
一开始毫无思路 看了题解才发现是二分图的最大匹配问题
行为n 列为m 行列匹配 (一行只能与一列匹配 这点和象棋的车的意义一样)
再去掉点看看最大匹配会不会少 如果少了说明为关键点
其中 x,y数组值得学习!
#include<bits/stdc++.h>
using namespace std;
#define MAXI 105
int mp[MAXI][MAXI];
int used[MAXI];
int vis[MAXI];
int n,m;
bool dfs(int x)
{
for(int j=;j<=m;j++)
{
if(mp[x][j]&&!used[j])
{
used[j]=;
if(!vis[j]||dfs(vis[j]))
{
vis[j]=x;
return true;
}
}
}
return false;
} int find1(void)
{ int ans=;
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++)
{
memset(used,,sizeof(used));
if(dfs(i))ans++;
}
return ans;
} int main()
{
int k;
int cas=;
while(scanf("%d%d%d",&n,&m,&k)==)
{
memset(mp,,sizeof(mp));
int x[MAXI*MAXI],y[MAXI*MAXI];
for(int i=;i<=k;i++)
{
scanf("%d%d",&x[i],&y[i]);
mp[ x[i] ][ y[i] ]=;
}
int ans=find1();
int sum=;
for(int i=;i<=k;i++)
{
mp[ x[i] ][ y[i] ]=;
int a=find1();
if(a<ans) sum++;
mp[ x[i] ][ y[i] ]=;
}
printf("Board %d have %d important blanks for %d chessmen.\n",++cas,sum,ans);
}
}
做了1045感觉有点疑惑
发现这种是 没有障碍的 只是限定哪些格子可以放
而那题有墙这种概念
棋盘游戏 HDU1281的更多相关文章
- 棋盘游戏---hdu1281(最大匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 题目大意:就是车和车之间不能发生攻击.还有一部分位置不可以放置棋子. 解题思路:一行一列 ...
- HDU1281 棋盘游戏 —— 二分图最大匹配 + 枚举
题目链接:https://vjudge.net/problem/HDU-1281 棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit ...
- hdu-1281.棋盘游戏(二分图匹配 + 二分图关键点查询)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu------1281 棋盘游戏(最小覆盖点)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- Hdu1281 棋盘游戏
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU1281: 棋盘游戏(二分图匹配)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu1281棋盘游戏
Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只 ...
- hdu1281 棋盘游戏 二分图最大匹配
小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才可以放,小希还是很轻松的解决 ...
- hdu1281(棋盘游戏,车的放置)
Problem Description 给定一个n * m的棋盘,在棋盘里放尽量多的国际象棋中的车,使他们不能相互攻击 已知有些格子不能放置,问最多能放置多少个车 并计算出必须棋盘上的必须点. Inp ...
随机推荐
- Qt ------ WAV 音频文件介绍
summary: wav 文件是有文件头的,播放时我们需要跳过文件头,否则开始播放有一小段时间的噪音,具体做法是:1.读取文件 2.读取位置指到文件头之后即可. 在资源交换文件RIFF标准中,所有的数 ...
- java基础基础总结----- Math(随机数)
前言:math类中感觉最好玩的应该就是随机数 代码: package com.day13.math; import java.util.Random; /** * 类说明 :Math * @autho ...
- arcgis10.2连接表xlsx格式失败
需要安装 2007 Office System 驱动程序(AccessDatabaseEngine.exe)
- MySQL数据类型以及基本使用详解
MySQL数据类型以及基本使用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL服务器的主要组件 我们知道MySQL的主要组件主要是由服务端(mysqld)和客户端 ...
- 怎么使用 JavaScript 将网站后台的数据变化实时更新到前端
实时这个工作现在大体有两种方法一.前端不断地向后台轮询请求数据查询的接口(不管你是用AJAX还是什么)然后将返回的数据重绘在页面上,这以前端页面为主动的方式.二.如果浏览器支持Websocket 那么 ...
- python操作txt文件中数据教程[2]-python提取txt文件
python操作txt文件中数据教程[2]-python提取txt文件中的行列元素 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原始txt文件 程序实现后结果-将txt中元素提取并保存在c ...
- python---django中模板渲染(csrf令牌使用,自定义模板函数)
使用终端,可以更方便的去实验,但是没有提示信息: 在项目目录下: D:\MyPython\day23\HelloWorld>python manage.py shell 开始实验: >&g ...
- 最长回文子串问题-Manacher算法
转:http://blog.csdn.net/dyx404514/article/details/42061017 Manacher算法 算法总结第三弹 manacher算法,前面讲了两个字符串相算法 ...
- ASP.NET MVC学习(三)之过滤器Filter
http://www.cnblogs.com/yaopengfei/p/7910763.html
- Java SpringMVC框架学习(二)httpServeltRequest和Model传值的区别
HttpServletRequest 为什么大多程序在controller中给jsp传值时使用model.addAttribute()而不使用httpServeletRequest.setAttrib ...