P2825 [HEOI2016/TJOI2016]游戏 (二分图最大匹配,预处理)
P2825 [HEOI2016/TJOI2016]游戏
分析:
和 P1129 [ZJOI2007] 矩阵游戏 这题差不多,也是行和列分别看作二分图的两个集合
多了一些 预处理
若行或列被硬石头隔开了,那再分别加行或列即可
吐槽一下下:wsfwwsfwwsfw , "yr[j]=++toy""yr[j]=++toy""yr[j]=++toy" 我直接复制上一行,把 jjj 变成 iii 了,调错调了 111 小时…
还对着题解写了另一种预处理的解法(见下文)
#include <bits/stdc++.h>
using namespace std;typedef long long ll;
const int N=1005;vector <int> g[N];
int vis[N],pre[N];
bool dfs(int u,int tag)
{if(vis[u]==tag) return false;vis[u]=tag;for(auto v : g[u]){if(!pre[v] || dfs(pre[v],tag)){pre[v]=u; return true;}}return false;
}
int xr[N], yr[N];
char s[N][N];
int b[N];
signed main()
{ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);int n,m;cin>>n>>m;for(int i=1;i<=n;i++) xr[i]=i;for(int i=1;i<=m;i++) yr[i]=i;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) cin>>s[i][j];}int tox=n, toy=m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) {if(s[i][j]=='*'){g[xr[i]].push_back(yr[j]);}if(s[i][j]=='#'){if(s[i][j+1]=='x' || s[i][j+1]=='*') xr[i]=++tox;if(s[i+1][j]=='x' || s[i+1][j]=='*') yr[j]=++toy;}}}int ans=0;for(int i=1;i<=tox;i++){if(dfs(i,i)) ans++;}cout<<ans<<endl;return 0;
}
(没有多大区别,我是合并的写,还省空间了)
#include <bits/stdc++.h>
using namespace std;typedef long long ll;
const int N=1005;vector <int> g[N];
int vis[N],pre[N];
bool dfs(int u,int tag)
{if(vis[u]==tag) return false;vis[u]=tag;for(auto v : g[u]){if(!pre[v] || dfs(pre[v],tag)){pre[v]=u; return true;}}return false;
}
int row[N][N], col[N][N];
char s[N][N];
int b[N];
signed main()
{ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);int n,m;cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) cin>>s[i][j];}int tox=0, toy=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(s[i][j]=='#') continue;if(j==1 || s[i][j-1]=='#') tox++;row[i][j]=tox;}}for(int j=1;j<=m;j++){for(int i=1;i<=n;i++){if(s[i][j]=='#') continue;if(i==1 || s[i-1][j]=='#') toy++;col[i][j]=toy;}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(s[i][j]=='*'){g[row[i][j]].push_back(col[i][j]);}}}int ans=0;for(int i=1;i<=tox;i++){if(dfs(i,i)) ans++;}cout<<ans<<endl;return 0;
}
P2825 [HEOI2016/TJOI2016]游戏 (二分图最大匹配,预处理)相关推荐
- P2825 [HEOI2016/TJOI2016]游戏
题目描述 详见 P2825 [HEOI2016/TJOI2016]游戏. solution 套路题. 一般思路是行列建点跑二分图最大匹配. 此题中的#会分隔行列,因此我们把每行的极大联通块设为点,列 ...
- BZOJ 1854: [Scoi2010]游戏( 二分图最大匹配 )
匈牙利算法..从1~10000依次找增广路, 找不到就停止, 输出答案. --------------------------------------------------------------- ...
- 洛谷P1129: [ZJOI2007]矩阵游戏(二分图最大匹配)
https://www.luogu.org/problemnew/show/P1129 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N×N ...
- HDU - 1528 Card Game Cheater(二分图最大匹配)
题目链接:点击查看 题目大意:题意有点像求田忌赛马的最优解,大概意思就是现在有两个人,每个人都有n张不同的扑克牌,扑克牌的大小首先以点数来确定,点数相同的情况下以花色来决定,红桃(Heart)> ...
- HDU - 5090 Game with Pearls(二分图最大匹配)
题目链接:点击查看 题目大意:杰瑞和汤姆在玩游戏,游戏规则是:汤姆会拿来N个容器,每个容器内一开始就会包含1~N个小球,现在轮到杰瑞操作了,杰瑞可以选择往每个容器里加入0个或者任意k的倍数个小球,问杰 ...
- 棋盘游戏(二分图最大匹配)
棋盘游戏(二分图最大匹配) 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的"车",并且使得他们不能互相攻击,这当然很简单,但是Gardon ...
- 【网络流24题】解题报告:A、飞行员配对方案问题(最大流求二分图最大匹配)
A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] 题目链接 [问题分析] 二分图最大匹配问题. [建模方法] 在二分图的基础上增加源S和汇T. 1.S向X集合中每个顶点连一条容 ...
- 【模板】匈牙利算法 二分图最大匹配题模板
[任务] 给定一个二分图,用匈牙利算法求这个二分图的最大匹配数. [说明] 求最大匹配,那么我们希望每一个在左边的点都尽量找到右边的一个点和它匹配. 我们一次枚举左边的点x的所有出边指向的点y, 若y ...
- 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题
题目: 题目已经说了是最大二分匹配题, 查了一下最大二分匹配题有两种解法, 匈牙利算法和网络流. 看了一下觉得匈牙利算法更好理解, 然后我照着小红书模板打了一遍就过了. 匈牙利算法:先试着把没用过的左 ...
- 2021牛客多校3 - Minimum grid(二分图最大匹配-最大流)
题目链接:点击查看 题目大意:给出一个 n∗nn*nn∗n 的棋盘,其中有 mmm 个位置是需要填数字的位置,每个位置需要填 [0,k][0,k][0,k] 的数字中的其中一个,可以重复,现在给出每一 ...
最新文章
- bootstrap 时间日期日历控件(datetimepicker)附效果图
- 量子技术发展的一小步:Google AI推出开源框架Cirq
- Rational Purify 使用及分析实例(转载)
- Nginx深入了解-基础(一)
- [YTU]_2866(结构体---点坐标结构体)
- Visualization Document Feb 12 16:42
- 2021云栖大会丨首批阿里云计算巢认证合作伙伴获得授牌,阿里云与合作伙伴共筑云上生态
- Java 并发工具箱之concurrent包
- Java部分A+B正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA
- 附录:更多有序集合操作命令
- 程序猿bug修改名句
- Android系统开发智能机器人,Android智能机器人详解
- postek二次开发_POSTEK二次开发接口
- 以生活例子说明单线程与多线程
- 创建对象、原型、原型链
- 笔试题--你准备好了吗
- 美国数据科学家:重视非结构化数据分析 走出两大“经典”误区
- 亲测Tableau 2018.2 安装与破解
- log4j配置文件位置详解
- JUC -- 辅助类
热门文章
- python图像降采样,【图像处理】——改变图像的大小(降采样重采样)
- Error: Packagesfrx7 and VCLDB all Contains DBGrids
- DCDC中自举电容的原理小结(一)
- PHP中的日期相减函数,在php中有没有日期相减的函数
- Sharepoint lookup字段的关联列表查询
- [1] UI原型设计工具Pencil Project 学习系列----- 为什么选择
- vue3 reactive 对比 react useState 以及 ramda 和 lodash 的取舍问题
- 从1G说到5G:构造万物互联的社会
- java出现圅_java获取汉字拼音首字母A
- 零基础程序员自学编程的6种方法,你知道吗?