4443: [Scoi2015]小凸玩矩阵

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1002  Solved: 505
[Submit][Status][Discuss]

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

题目中说求第k大,相当于就是求第n-k+1小

那如何判断某个值p是否可以是选出来的N个数中第n-k+1个小的呢?

将棋盘转成二分图,所有的行作为二分图的左半部分,所有的列作为二分图的右半部分,如果图中点(x, y)上值<=p,那么x和y连一条边,如果最大匹配>=n-k+1,说明p可以作为第k大的数字

之后二分这个p值即可

#include<stdio.h>
#include<string.h>
int n, m, k, vis[255], link[255], a[255][255], road[255][255];
int Sech(int x)
{int i;for(i=1;i<=m;i++){if(vis[i]==0 && road[x][i]){vis[i] = 1;if(link[i]==0 || Sech(link[i])){link[i] = x;return 1;}}}return 0;
}
int Jud(int x)
{int i, j, sum;memset(road, 0, sizeof(road));memset(link, 0, sizeof(link));for(i=1;i<=n;i++){for(j=1;j<=m;j++){if(a[i][j]<=x)road[i][j] = 1;}}sum = 0;for(i=1;i<=n;i++){memset(vis, 0, sizeof(vis));if(Sech(i))sum++;}if(sum>=k)return 1;return 0;
}
int main(void)
{int i, j, l, r, mid;while(scanf("%d%d%d", &n, &m, &k)!=EOF){k = n-k+1;for(i=1;i<=n;i++){for(j=1;j<=m;j++)scanf("%d", &a[i][j]);}l = 1, r = 1000000000;while(l<r){mid = (l+r)/2;if(Jud(mid))r = mid;elsel = mid+1;}printf("%d\n", l);}return 0;
}

bzoj 4443: [Scoi2015]小凸玩矩阵(二分+二分匹配)相关推荐

  1. bzoj 4443 [Scoi2015]小凸玩矩阵 网络流,二分

    [Scoi2015]小凸玩矩阵 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1564  Solved: 734 [Submit][Status][ ...

  2. BZOJ 4443: [Scoi2015]小凸玩矩阵

    二次联通门 : BZOJ 4443: [Scoi2015]小凸玩矩阵 /*BZOJ 4443: [Scoi2015]小凸玩矩阵本来以为是道数据结构题后来想了想发现不可做就考虑二分dp判断推方程推不出来 ...

  3. [Scoi2015]小凸玩矩阵

    bzoj 4443: [Scoi2015]小凸玩矩阵 http://www.lydsy.com/JudgeOnline/problem.php?id=4443 Time Limit: 10 Sec   ...

  4. [SCOI2015]小凸玩矩阵 (匈牙利+二分)

    description 题目描述 小凸和小方是好朋友,小方给小凸一个 N×M(N≤M)的矩阵 A,要求小凸从其中选出 N 个数,其中任意两个数字不能在同一行或同一列,现小凸想知道选出来的 N 个数中第 ...

  5. 【bzoj4443】[Scoi2015]小凸玩矩阵 二分+二分图最大匹配

    题目描述 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,现小凸想知道选出来的N个数中第K大的数字的最小值是多少. ...

  6. bzoj 4446: [Scoi2015]小凸玩密室

    Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 115  Solved: 20 [Submit][Status][Discuss] Descripti ...

  7. 网络流学习总结和省选专练SCOI2015小凸玩矩阵

    这是四川连着第几个年头考二分套网络流了? 虽然这是一个二分图最大匹配,但是我匈牙利写挂了. 我太弱了. 好了不瞎扯牛逼了,这个题这么搞: 首先题目就告诉你求第k大最小. 首先这就让人瑟瑟发抖....第 ...

  8. bzoj4443:[Scoi2015]小凸玩矩阵

    传送门 二分答案是显然的啊,然后对于比二分出的值大的直接跑最大匹配,然后判定就好了 代码: #include<cstdio> #include<iostream> #inclu ...

  9. bzoj-4433 小凸玩矩阵(二分图,二分+匈牙利)

    4443: [Scoi2015]小凸玩矩阵 Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列, ...

最新文章

  1. LeetCode简单题之山羊拉丁文
  2. GridView标题行换行之我见 (转)
  3. 传递字符串_一道经典面试题:字符串在Java中如何通过“引用”传递
  4. 《职场》笔记20061119
  5. “代理”那点事儿-使用代理和搭建简单代理服务
  6. 黑科技教你一招如何解除 生活中烦人的验证码问题
  7. 方法的返回值类型是object_JavaScript中如何判断类型
  8. JSTL-EL表达式 函数fn
  9. canal mysql从库_大厂如何基于binlog解决多机房同步mysql数据(一)?
  10. 虚拟主机中,不修改IIS设置,在IIS6下运行MVC架构的网站
  11. 论__AlertDialog自定义布局回调修改的正确方式
  12. 电控 应用层开发 学习_阿里巴巴如何改善开发人员在 K8s 上的体验?
  13. sqlite3 cmd命令输出乱码
  14. 【CMAKE系列】cmake中CMakeLists.txt脚本的常用语法
  15. 4.12_proxy_结构型模式:代理模式
  16. 计算机窗口跳转列表,别小看它!Windows跳转列表效率高
  17. Pandas系列(十二)实现groupby分组统计
  18. 在DSP28335上使用RTOS的经验总结
  19. 一个名牌大学毕业生心酸经历
  20. 制图软件CAD基础知识科普手册(一)

热门文章

  1. python自学看什么书-python自学看什么书
  2. python和c先学哪个-初学者python和c语言先学哪个好呢?
  3. 小学生python编程教程-围观~山东省的小学生Python编程入门都学的什么?
  4. 哈弗F7x驾舱数字化测试 语音识别精准
  5. 结构体中操作c语言,C语言中结构体的操作
  6. 【动态规划】路径dp:蓝桥2020: 数字三角形
  7. 算法笔记:二叉树的序列化和反序列化(剑指 Offer 37)
  8. ffdshow 源代码分析 7: libavcodec视频解码器类(TvideoCodecLibavcodec)
  9. cant connect local mysql to_连接Mysql提示Can't connect to local MySQL server through socket的解决方法...
  10. python rpy2时间序列_当从多线程使用rpy2调用r函数时,模型作为r函数的参数