【BZOJ4443】小凸玩矩阵(二分答案,二分图匹配)
【BZOJ4443】小凸玩矩阵(二分答案,二分图匹配)
题面
Description
小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,现小凸想知道选出来的N个数中第K大的数字的最小值是多少。
Input
第一行给出三个整数N,M,K
接下来N行,每行M个数字,用来描述这个矩阵
Output
如题
Sample Input
3 4 2
1 5 6 6
8 3 4 3
6 8 6 3
Sample Output
3
HINT
1<=K<=N<=M<=250,1<=矩阵元素<=10^9
题解
看到这种第\(K\)大都直接二分
二分答案,然后因为行列都只能选一个,很明显的二分图匹配。
拆点之后把权值小于二分值的格子连边,直接二分图匹配就行了。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define ll long long
#define RG register
#define MAX 500
inline int read()
{
RG int x=0,t=1;RG char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=-1,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return x*t;
}
int n,m,g[MAX][MAX],K;
struct Line{int v,next;}e[MAX*MAX];
int h[MAX],cnt=1;
inline void Add(int u,int v){e[cnt]=(Line){v,h[u]};h[u]=cnt++;}
void Build(int Mid)
{
memset(h,0,sizeof(h));cnt=1;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
if(g[i][j]<=Mid)Add(i,j);
}
int match[MAX],vis[MAX],tot;
bool dfs(int u)
{
for(int i=h[u];i;i=e[i].next)
{
int v=e[i].v;
if(vis[v]==tot)continue;
vis[v]=tot;
if(!match[v]||dfs(match[v])){match[v]=u;return true;}
}
return false;
}
int check()
{
memset(match,0,sizeof(match));
int ret=0;
for(int i=1;i<=n;++i)
{
++tot;
if(dfs(i))++ret;
}
return ret;
}
int main()
{
n=read();m=read();K=n-read()+1;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)g[i][j]=read();
int l=0,r=1e9,ans=1e9;
while(l<=r)
{
int mid=(l+r)>>1;
Build(mid);
if(check()>=K)ans=mid,r=mid-1;
else l=mid+1;
}
printf("%d\n",ans);
return 0;
}
【BZOJ4443】小凸玩矩阵(二分答案,二分图匹配)的更多相关文章
- LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配
#2006. 「SCOI2015」小凸玩矩阵 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- 【BZOJ4443】[Scoi2015]小凸玩矩阵 二分+二分图最大匹配
[BZOJ4443][Scoi2015]小凸玩矩阵 Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或 ...
- 4443: [Scoi2015]小秃玩矩阵|二分答案|匈牙利
第K大看成第K小各种WA. .. 第K大也就是第n−K+1小.所以就能够愉快的二分答案了 二分答案找出比当前答案小的数的位置的坐标.推断一下能否够选出满足不在同一行同一列的n−K+1个数,然后就能够愉 ...
- bzoj4443 小凸玩矩阵
题目链接 二分+最大check #include<algorithm> #include<iostream> #include<cstdlib> #include& ...
- 2018.06.30 BZOJ4443: [Scoi2015]小凸玩矩阵(二分加二分图匹配)
4443: [Scoi2015]小凸玩矩阵 Time Limit: 10 Sec Memory Limit: 128 MB Description 小凸和小方是好朋友,小方给小凸一个N*M(N< ...
- BZOJ_4443_[Scoi2015]小凸玩矩阵_二分+二分图匹配
BZOJ_4443_[Scoi2015]小凸玩矩阵_二分+二分图匹配 Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个 ...
- bzoj 4443 [Scoi2015]小凸玩矩阵 网络流,二分
[Scoi2015]小凸玩矩阵 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1564 Solved: 734[Submit][Status][Di ...
- 「SCOI2015」小凸玩矩阵 解题报告
「SCOI2015」小凸玩矩阵 我好沙茶啊 把点当边连接行和列,在外面二分答案跑图的匹配就行了 我最开始二分方向搞反了,样例没过. 脑袋一抽,这绝壁要费用流,连忙打了个KM 然后wa了,一想这个不是完 ...
- BZOJ 4443: [Scoi2015]小凸玩矩阵 最大流
4443: [Scoi2015]小凸玩矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4443 Description 小凸和小方是好 ...
随机推荐
- Redis主从复制(Master/Slave) 与哨兵模式
Redis主从复制是什么? 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 Redis主从复制 ...
- MYSQL主从复制配置(整理)
MYSQL主从原理及过程 原理 Mysql的 Replication 是一个异步的复制过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),从一个 Mysql instace(我们称之为 ...
- python数据可视化——matplotlib 用户手册入门:pyplot 画图
参考matplotlib官方指南: https://matplotlib.org/tutorials/introductory/pyplot.html#sphx-glr-tutorials-intro ...
- HPUX 配置zabbix开机自动启动
1. 在/etc/rc.config.d目录下创建zabbixd文件,并增加以下内容: #!/sbin/sh # v1.0 ?zabbixd startup/kill config ...
- 数据库MySql在python中的使用
随着需要存储数据的结构不断复杂化,使用数据库来存储数据是一个必须面临的问题.那么应该如何在python中使用数据库?下面就在本篇博客中介绍一下在python中使用mysql. 首先,本博客已经假定阅读 ...
- git blame 查看某行代码提交记录
1. 在当前git项目目录下执行 git blame -L 38,38 <filename> 例子: git blame -L 38,38 src/component/BarCode/i ...
- 只执行一次的js 函数。
function runOnce(fn, context) { //控制让函数只触发一次 return function () { try { fn.apply(context || this, ar ...
- 20170928-3 四则运算psp
1.本周psp: 2.本周进度条: 3.累计进度图(折线图): 4.psp饼状图:
- 404 Note Found -选题报告
目录 NABCD分析引用 N(Need,需求): A(Approach,做法): B(Benefit,好处): C(Competitors,竞争): D(Delivery,交付): 初期 中期 个人贡 ...
- OA_1界面
<%@ page language="java" contentType="text/html;charset=GB18030" pageEncoding ...