#2006. 「SCOI2015」小凸玩矩阵

内存限制:256 MiB时间限制:1000 ms标准输入输出
题目类型:传统评测方式:文本比较
上传者: 匿名

题目描述

小凸和小方是好朋友,小方给小凸一个 N×M N \times MN×M(N≤M N \leq MN≤M)的矩阵 A AA,要求小凸从其中选出 N NN 个数,其中任意两个数字不能在同一行或同一列,现小凸想知道选出来的 N NN 个数中第 K KK 大的数字的最小值是多少。

输入格式

第一行给出三个整数 N NN、M MM、K KK。
接下来 N NN 行,每行 M MM 个数字,用来描述这个矩阵。

输出格式

输出选出来的 N NN 个数中第 K KK 大的数字的最小值。

样例

样例输入

3 4 2
1 5 6 6
8 3 4 3
6 8 6 3

样例输出

3

数据范围与提示

1≤K≤N≤M≤250,1≤Ai,j≤109 1 \leq K \leq N \leq M \leq 250, 1 \leq A_{i, j} \leq 10 ^ 91≤K≤N≤M≤250,1≤A​i,j​​≤10​9​​

题目链接:https://loj.ac/problem/2006

题意:选出n个行列不相同的数,使得第k大最小。

思路:二分答案+二分匹配。二分答案,然后对行和列进行二分匹配,a[i][j]<=mid的最大匹配与n-k+1进行比较。

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<set>
#include<queue>
#include<stack>
#include<map>
#include<vector>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
const int maxn=,maxm=1e5+,inf=0x3f3f3f3f,mod=1e9+;
const ll INF=1e18+;
int n,m,k;
ll a[maxn][maxn];
vector<int>G[maxn];
int match[maxn];
int used[maxn];
bool dfs(int u,ll mid)
{
for(int v=; v<=m; v++)
{
if(a[u][v]>mid) continue;
if(used[v]) continue;
used[v]=true;
if(match[v]<||dfs(match[v],mid))
{
match[v]=u;
return true;
}
}
return false;
}
bool check(ll mid)
{
int res=;
memset(match,-,sizeof(match));
for(int i=; i<=n; i++)
{
memset(used,false,sizeof(used));
res+=dfs(i,mid);
}
//cout<<res<<endl;
return res>=n-k+?:;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
ll l=INF,r=;
for(int i=; i<=n; i++)
{
ll mmin=INF,mmax=;
for(int j=; j<=m; j++)
{
scanf("%d",&a[i][j]);
l=min(l,a[i][j]),r=max(r,a[i][j]);
}
}
ll ans=-;
while(l<=r)
{
ll mid=(l+r)/;
//cout<<l<<" "<<r<<" "<<mid<<endl;
if(check(mid)) r=mid-,ans=mid;
else l=mid+;
}
printf("%lld\n",ans);
return ;
}

二分答案+二分比配

LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配的更多相关文章

  1. LibreOJ #2006. 「SCOI2015」小凸玩矩阵

    想了挺久没想出来,一看题解恍然大悟.一个数对应一行和一列,二分答案,凡是小于等于答案的就连边.如果满足能够取出 \(n - k + 1\) 个不比二分中点 \(mid\) 大的数,那么r = mid, ...

  2. loj #2006. 「SCOI2015」小凸玩矩阵

    #2006. 「SCOI2015」小凸玩矩阵   题目描述 小凸和小方是好朋友,小方给小凸一个 N×M N \times MN×M(N≤M N \leq MN≤M)的矩阵 A AA,要求小凸从其中选出 ...

  3. 【LOJ】#2006. 「SCOI2015」小凸玩矩阵

    题解 又是美好的一天,我今天的小目标是LOJ刷题数名次前进两名(虽然巨佬们都是BZOJ千题啊这样的><,我就在LOJ划划水吧,我永远喜欢LOJ 这道题要求K大值最小,又是什么什么大值最小, ...

  4. AC日记——「SCOI2015」小凸玩矩阵 LiBreOJ 2006

    「SCOI2015」小凸玩矩阵 思路: 二分+最大流: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300 ...

  5. 「SCOI2015」小凸玩矩阵 解题报告

    「SCOI2015」小凸玩矩阵 我好沙茶啊 把点当边连接行和列,在外面二分答案跑图的匹配就行了 我最开始二分方向搞反了,样例没过. 脑袋一抽,这绝壁要费用流,连忙打了个KM 然后wa了,一想这个不是完 ...

  6. 「SCOI2015」小凸玩矩阵

    题目链接 问题分析 题目给了充足的暗示,我们只需要二分答案然后跑匈牙利即可.要相信匈牙利的速度 参考程序 #include <bits/stdc++.h> using namespace ...

  7. 「SCOI2015」小凸玩密室 解题报告

    「SCOI2015」小凸玩密室 虽然有心里在想一些奇奇怪怪的事情的原因,不过还是写太久了.. 不过这个题本身也挺厉害的 注意第一个被点亮的是任意选的,我最开始压根没注意到 \(dp_{i,j}\)代表 ...

  8. loj#2009.「SCOI2015」小凸玩密室

    题目链接 loj#2009. 「SCOI2015」小凸玩密室 题解 树高不会很高<=20 点亮灯泡x,点亮x的一个子树,再点亮x另外的子树, 然后回到x的父节点,点亮父节点之后再点亮父节点的其他 ...

  9. —Libre#2009. 「SCOI2015」小凸玩密室

    #2009. 「SCOI2015」小凸玩密室 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 ...

随机推荐

  1. ssh问题:ssh_exchange_identification: Connection closed by remote host

    ssh问题:ssh_exchange_identification: Connection closed by remote host... 刚刚一个朋友告诉我SSH连接不上服务器了,重启电脑也不管用 ...

  2. 03_java基础(一)之计算机应用知识普及

    1.计算机(Computer) 全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算机称为裸机.常见的形式有台式计 ...

  3. Socket通讯-Netty框架实现Java通讯

    Netty简介 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty ...

  4. java和c#中String

    java中: c#中: 1.拼接字符串 sql语句中 in() str="'001','002','003'";至于产生string就这样  str1="'001'&qu ...

  5. 解题(LevenshteinInstance--Levenshtein距离)

    题目描述 Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符.编辑距离 ...

  6. jvisual中添加jstatd远程监控

    visualVM远程监控: jvisual中需要增加插件安装. 在执行Java 应用程序的服务器上先生成一个jstatd.all.policy grant codebase "file:${ ...

  7. Python 继承与多继承

    相关知识点: __class__.__name__的用法. >>> class ABC: def func(self): print('打印类名:',__class__.__name ...

  8. 修改Eclipse主题与Eclipse中使用SVN

    自从开始IDEA后,很久没用eclipse了,有位老同学问我eclipse中如何使用SVN?我就打开eclipse试试,白光太刺眼了~作为强迫症修改下主题.结果如下: 修改完编辑的背景颜色,并没有很好 ...

  9. opsmanage 自动化运维管理平台

    关闭防火墙.selinux 更换阿里云 yum源 依赖环境 yum install -y epel-releaseyum install vim net-tools nmon htop rsync t ...

  10. 树的子结构(python)

    题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) # -*- coding:utf-8 -*- # class TreeNode: # def __ ...