「SCOI2015」小凸玩矩阵
问题分析
题目给了充足的暗示,我们只需要二分答案然后跑匈牙利即可。要相信匈牙利的速度
参考程序
#include <bits/stdc++.h>
using namespace std;
const int Maxn = 310;
const int INF = 2147483647;
int N, M, K, A[ Maxn ][ Maxn ], Max, Min;
int Map[ Maxn ][ Maxn ], Vis[ Maxn ], Mx[ Maxn ], My[ Maxn ];
int Dfs( int x ) {
for( int i = 1; i <= M; ++i ) {
if( Map[ x ][ i ] == 0 ) continue;
if( Vis[ i ] ) continue;
Vis[ i ] = 1;
if( My[ i ] == 0 || Dfs( My[ i ] ) ) {
Mx[ x ] = i; My[ i ] = x;
return 1;
}
}
return 0;
}
bool Check( int Mid ) {
memset( Map, 0, sizeof( Map ) );
memset( Mx, 0, sizeof( Mx ) );
memset( My, 0, sizeof( My ) );
for( int i = 1; i <= N; ++i )
for( int j = 1; j <= M; ++j )
if( A[ i ][ j ] <= Mid ) Map[ i ][ j ] = 1;
int Ans = 0;
for( int i = 1; i <= N; ++i ) {
memset( Vis, 0, sizeof( Vis ) );
Ans += Dfs( i );
}
return Ans >= ( N - K + 1 );
}
int main() {
scanf( "%d%d%d", &N, &M, &K );
for( int i = 1; i <= N; ++i )
for( int j = 1; j <= M; ++j )
scanf( "%d", &A[ i ][ j ] );
Max = 0, Min = INF;
for( int i = 1; i <= N; ++i )
for( int j = 1; j <= M; ++j )
Max = max( A[ i ][ j ], Max ), Min = min( A[ i ][ j ], Min );
int Ans = 0;
while( Max >= Min ) {
int Mid = ( Max + Min ) >> 1;
if( Check( Mid ) ) Ans = Mid, Max = Mid - 1; else Min = Mid + 1;
}
printf( "%d\n", Ans );
return 0;
}
「SCOI2015」小凸玩矩阵的更多相关文章
- 「SCOI2015」小凸玩矩阵 解题报告
「SCOI2015」小凸玩矩阵 我好沙茶啊 把点当边连接行和列,在外面二分答案跑图的匹配就行了 我最开始二分方向搞反了,样例没过. 脑袋一抽,这绝壁要费用流,连忙打了个KM 然后wa了,一想这个不是完 ...
- LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配
#2006. 「SCOI2015」小凸玩矩阵 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- AC日记——「SCOI2015」小凸玩矩阵 LiBreOJ 2006
「SCOI2015」小凸玩矩阵 思路: 二分+最大流: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300 ...
- loj #2006. 「SCOI2015」小凸玩矩阵
#2006. 「SCOI2015」小凸玩矩阵 题目描述 小凸和小方是好朋友,小方给小凸一个 N×M N \times MN×M(N≤M N \leq MN≤M)的矩阵 A AA,要求小凸从其中选出 ...
- 【LOJ】#2006. 「SCOI2015」小凸玩矩阵
题解 又是美好的一天,我今天的小目标是LOJ刷题数名次前进两名(虽然巨佬们都是BZOJ千题啊这样的><,我就在LOJ划划水吧,我永远喜欢LOJ 这道题要求K大值最小,又是什么什么大值最小, ...
- LibreOJ #2006. 「SCOI2015」小凸玩矩阵
想了挺久没想出来,一看题解恍然大悟.一个数对应一行和一列,二分答案,凡是小于等于答案的就连边.如果满足能够取出 \(n - k + 1\) 个不比二分中点 \(mid\) 大的数,那么r = mid, ...
- 「SCOI2015」小凸玩密室 解题报告
「SCOI2015」小凸玩密室 虽然有心里在想一些奇奇怪怪的事情的原因,不过还是写太久了.. 不过这个题本身也挺厉害的 注意第一个被点亮的是任意选的,我最开始压根没注意到 \(dp_{i,j}\)代表 ...
- loj#2009.「SCOI2015」小凸玩密室
题目链接 loj#2009. 「SCOI2015」小凸玩密室 题解 树高不会很高<=20 点亮灯泡x,点亮x的一个子树,再点亮x另外的子树, 然后回到x的父节点,点亮父节点之后再点亮父节点的其他 ...
- —Libre#2009. 「SCOI2015」小凸玩密室
#2009. 「SCOI2015」小凸玩密室 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
随机推荐
- Python验证码登录(Tesseract安装配置)
1.安装py库:pytesseract,PIL pip install pytesseract pip install PILLOW 如果安装时,出现权限不足: pip install --user ...
- Android新版xUtils3工具类相关debug
首先出现问题是 build.gradle中的csayısıom.lidroid.xutils:xutils:2.6.13报错了,所以想到是版本的问题,github上搜了xutils发现有新版xutil ...
- Linux小知识:rm -rf/*会将系统全部删除吗
Linux小知识:rm -rf/*会将系统全部删除吗 本文是学习笔记,视频地址为:https://www.bilibili.com/video/av62839850 执行上面的命令并不会删除所有内容( ...
- [转载]十六进制数的两种不同表示:0x和H
来源:https://blog.csdn.net/u013773644/article/details/519811860x是16进制的前缀,H是16进制的后缀 都是表示十六进制数,意义上没有什么区别 ...
- Centos7:zookeeper安装,配置与使用
配置jdk环境 解压缩zookeeper的压缩包 配置 创建data目录 复制zoo_sample.cfg为zoo.cfg 修改confg/zoo.cfg中dataDir=**/data 常用命令 . ...
- @babel/traverse 使用方法小记
@babel/traverse 官网: https://babeljs.io/docs/en/babel-traverse github:https://github.com/babel/babel/ ...
- 第八篇 CSS定位
CSS定位 CSS除了内外边距控制元素,还有定位,看到“定位”两个字,同学们应该就能清楚,它能够做什么. 在刚学习的时候,我也经常使用定位,来控制元素的位置,但是初学的同学可能会注意不到定位的一些 ...
- Linux版本显示和区别32位还是64位系统
查看已经安装的Linux版本信息 1.cat /etc/issue 查看版本 [root@master master]# cat /etc/issue \S Kernel \r on an \m 2. ...
- Delphi SpeedButton组件
- Vi编辑器中查找替换
1 第一个是替换当前行的yesterday为all 第二个是替换全局的 yesterday 为all :s/yesterday/all :s/yesterday/all/g