[LUOGU] P4251 [SCOI2015]小凸玩矩阵
行列看成点,格子看成边,二分一个边权,删去大于它的边,新图上的最大流>k则答案可以更优,小于k则调整左边界。
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std; inline int rd(){
int ret=,f=;char c;
while(c=getchar(),!isdigit(c))f=c=='-'?-:;
while(isdigit(c))ret=ret*+c-'',c=getchar();
return ret*f;
} const int MAXN=*;
const int M=**; struct Edge{
int next,to,f;
}e[M<<];
int ecnt=,head[MAXN];
inline void add(int x,int y,int f){
e[++ecnt].next = head[x];
e[ecnt].to = y;
e[ecnt].f = f;
head[x] = ecnt;
} int n,m,num;
int a[][];
int b[MAXN],p; int dep[MAXN];
queue<int> Q;
bool bfs(int s,int t){
memset(dep,,sizeof(dep));
dep[s]=;Q.push(s);
while(!Q.empty()){
int top=Q.front();Q.pop();
for(int i=head[top];i;i=e[i].next){
int v=e[i].to;
if(dep[v]||!e[i].f) continue;
dep[v]=dep[top]+;Q.push(v);
}
}
return dep[t];
}
int cur[MAXN];
int dfs(int x,int flow,int t){
if(x==t) return flow;
int used=,tmp;
for(int i=head[x];i;i=e[i].next){
int v=e[i].to;
if(dep[v]!=dep[x]+) continue;
tmp=dfs(v,min(flow-used,e[i].f),t);
e[i].f-=tmp;e[i^].f+=tmp;used+=tmp;
if(used==flow) return flow;
if(e[i].f) cur[x]=i;
}
if(!used) dep[x]=-;
return used;
}
int dinic(int s,int t){
int ret=;
while(bfs(s,t)){
memcpy(cur,head,sizeof(head));
ret+=dfs(s,<<,t);
}
return ret;
} int main(){
n=rd();m=rd();num=rd();
int S=n*m+,T=n*m+;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
b[++p]=a[i][j]=rd();
}
}
int ans=<<;
sort(b+,b++p);
int l=,r=p;
while(l<=r){
int mid=l+r>>;
ecnt=;
memset(head,,sizeof(head));
for(int i=;i<=n;i++)add(S,i,),add(i,S,);
for(int i=;i<=m;i++)add(i+n,T,),add(T,i+n,);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(a[i][j]>b[mid]) continue;
add(i,j+n,);
add(j+n,i,);
}
}
int tmp=dinic(S,T);
if(tmp>=n-num+) r=mid-,ans=b[mid];
else l=mid+;
}
cout<<ans;
return ;
}
[LUOGU] P4251 [SCOI2015]小凸玩矩阵的更多相关文章
- [bzoj4443] [loj#2006] [洛谷P4251] [Scoi2015]小凸玩矩阵
Description 小凸和小方是好朋友,小方给小凸一个 \(N \times M\)( \(N \leq M\) )的矩阵 \(A\) ,要求小秃从其中选出 \(N\) 个数,其中任意两个数字不能 ...
- Luogu 4251 [SCOI2015]小凸玩矩阵
BZOJ 4443 二分答案 + 二分图匹配 外层二分一个最小值,然后检验是否能选出$n - k + 1$个不小于当前二分出的$mid$的数.对于每一个$a_{i, j} \geq mid$,从$i$ ...
- BZOJ_4443_[Scoi2015]小凸玩矩阵_二分+二分图匹配
BZOJ_4443_[Scoi2015]小凸玩矩阵_二分+二分图匹配 Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个 ...
- 2018.06.30 BZOJ4443: [Scoi2015]小凸玩矩阵(二分加二分图匹配)
4443: [Scoi2015]小凸玩矩阵 Time Limit: 10 Sec Memory Limit: 128 MB Description 小凸和小方是好朋友,小方给小凸一个N*M(N< ...
- BZOJ 4443: [Scoi2015]小凸玩矩阵 最大流
4443: [Scoi2015]小凸玩矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4443 Description 小凸和小方是好 ...
- 【BZOJ4443】[Scoi2015]小凸玩矩阵 二分+二分图最大匹配
[BZOJ4443][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]小凸玩矩阵
Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,现小凸想知道选出来的N个数中第K大的数字的最 ...
- 【刷题】BZOJ 4443 [Scoi2015]小凸玩矩阵
Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,现小凸想知道选出来的N个数中第K大的数字的最 ...
随机推荐
- 为HTML5添加新样式标签
为 HTML 添加新元素 该实例向 HTML 添加的新的元素,并为该元素定义样式,元素名为 <myHero> : 实例 <!DOCTYPE html> <html> ...
- C# 数组之List<T>
一.引言 List<T>是ArrayList的泛型等效类,底层数据结构也是数组. 相比Array而言,可以动态的拓展数组长度.增删数据 相比ArrayList而言,由于声明的时候就已经规定 ...
- POJ1830(异或高斯消元)
对于某个开关,都有n个选项可能影响它的结果,如果会影响,则系数为1,否则系数为0:最后得到自由元的个数,自由元可选0也可选1. #include <cstdio> #include < ...
- 基于.NetCore2.1。服务类库采用.Net Standard2.0,兼容.net 4.6.1消息推送服务
基于.NetCore2.1.服务类库采用.Net Standard2.0,兼容.net 4.6.1消息推送服务 https://www.cnblogs.com/ibeisha/p/weixinServ ...
- 转 db_file_multiblock_read_count
http://www.laoxiong.net/table_scan_and_buffer_cache.html 全表扫描与buffer cache https://www.cnblogs.com/R ...
- 061 Rotate List 旋转链表
给定一个链表,将链表向右旋转 k 个位置,其中 k 是非负数.示例:给定 1->2->3->4->5->NULL 且 k = 2,返回 4->5->1-> ...
- SSRS-lookupSet-DataSet-分组查询
SSRS-lookupSet-DataSet-分组查询 来源:http://www.cnblogs.com/biwork/p/3621885.html 目录:http://www.cnblogs.co ...
- MySQL存储过程多条修改语句
DROP procedure Sel_Function_ActivityPastDueDELIMITER $$DROP procedure IF EXISTS`shouyi`.`Sel_Functio ...
- String、String Buffer、String Builder
对于String.String Buffer.String Builder:我一直都只知道String是字符串常量,后两者是字符串变量: String和String Buffer是线程安全的,Stri ...
- mongodb关联查询 和spring data mongodb
GITHUB:https://github.com/peterowang/Springdata-mongo 使用DBRefs DBRefs中有三个字段 - $ref - 此字段指定引用文档的集合 $i ...