BZOJ 4443: [Scoi2015]小凸玩矩阵 二分图最大匹配+二分
题目链接:
http://www.lydsy.com/JudgeOnline/problem.php?id=4443
题解:
二分答案,判断最大匹配是否>=n-k+1;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std; const int maxn=;
const int INF=1e9;
int mat[maxn][maxn]; int n,m,k;
int lef[maxn],_t[maxn];
vector<int> G[maxn]; bool match(int i){
for(int j=;j<G[i].size();j++){
int v=G[i][j];
if(_t[v]==){
_t[v]=;
if(!lef[v]||match(lef[v])){
lef[v]=i;
return true;
}
}
}
return false;
} bool check(int x){
for(int i=;i<=n;i++) G[i].clear();
memset(lef,,sizeof(lef));
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(mat[i][j]<=x) G[i].push_back(j);
}
}
for(int i=;i<=n;i++){
memset(_t,,sizeof(_t));
match(i);
}
int cnt=;
for(int i=;i<=m;i++){
if(lef[i]) cnt++;
}
if(cnt>=n-k+) return true;
return false;
} int main(){
while(scanf("%d%d%d",&n,&m,&k)==&&n){
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
scanf("%d",&mat[i][j]);
}
}
int low=,hig=INF;
while(low<hig-){
int mid=low+(hig-low)/;
if(check(mid)) hig=mid;
else low=mid;
}
printf("%d\n",hig);
}
return ;
}
BZOJ 4443: [Scoi2015]小凸玩矩阵 二分图最大匹配+二分的更多相关文章
- BZOJ 4443: [Scoi2015]小凸玩矩阵 最大流
4443: [Scoi2015]小凸玩矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4443 Description 小凸和小方是好 ...
- bzoj 4443 [Scoi2015]小凸玩矩阵 网络流,二分
[Scoi2015]小凸玩矩阵 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1564 Solved: 734[Submit][Status][Di ...
- bzoj 4443: [Scoi2015]小凸玩矩阵
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 149 Solved: 81[Submit][Status][Discuss] Description ...
- 【刷题】BZOJ 4443 [Scoi2015]小凸玩矩阵
Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,现小凸想知道选出来的N个数中第K大的数字的最 ...
- BZOJ 4443 [Scoi2015]小凸玩矩阵(二分答案+二分图匹配)
[题目链接]http://www.lydsy.com/JudgeOnline/problem.php?id=4443 [题目大意] 从矩阵中选出N个数,其中任意两个数字不能在同一行或同一列 求选出来的 ...
- [luogu4251 SCOI2015] 小凸玩矩阵 (二分图最大匹配)
传送门 Description Input Output 输出包含一行,为选出的 n 个数中第 k 大数的最小值. Sample Input 输入样例1: 2 3 1 1 2 4 2 4 1 输入样例 ...
- 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个数,其中任意两个 ...
- 【BZOJ4443】[Scoi2015]小凸玩矩阵 二分+二分图最大匹配
[BZOJ4443][Scoi2015]小凸玩矩阵 Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或 ...
随机推荐
- What is the difference between differed processing mode and interactive mode?
Every time you access and navigate through the fields on a page in PeopleSoft there are events such ...
- Azkaban 作业调度
转载一篇不错的文章:http://www.cnblogs.com/smartloli/p/5191155.html
- JS获取网页属性包括宽、高等
JS获取网页属性包括宽.高等. function getInfo() { // www.jbxue.com var s = ""; s += " 网页可见区域宽:&q ...
- PHP使用phpexcel读取excel文件
PHP读取excel文件 require("Classes/PHPExcel.php"); require("Classes/PHPExcel/IOFactory.php ...
- python中split与join
1.split个人最喜欢的就是它能使输入的一连串数字变为list. str=raw_input("some ") str2=str.split(" ") str ...
- SublimeText插件Emmet的自定义模板
在前端界,作为快速生成代码的Emmet插件相当给力.最近在学bootstrap,需要频繁生成html头文件,我就想着自定义模板.国内只有基础教程,只好自己读英文文档了. Emmet国内基础教程地址: ...
- 解决matplotlib中文乱码问题(Windows)
1.修改matplotlibrc文件 进入Python安装目录下的Lib\site-packages\matplotlib\mpl-data目录,打开matplotlibrc文件,删除font.fam ...
- Ajax 异步调用代码
function jsAjax() { var Con; var XmlRequset; var AjaxContent; //返回内容 if (window.XMLHttpRequest) { // ...
- Linux环境PostgreSQL源码编译安装
Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...
- ORACLE 分区表简介
参考链接:http://blog.csdn.net/ziwen00/article/details/9158725ORACLE-分区表 此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分 ...