题目链接

思路:题目要求变相解答一下,求出是否有n-k个数,不大于当前求的第k个数

而每一行每一列只能有一个数,就可以得到一个二分图的思路,边上的权值就是第i行第j列这个数的值

对于答案就是第k大的数,则用二分来求

每一次对mid进行判断时,要重建图,以满足要求

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <cctype>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <cstring>
  7. using namespace std;
  8.  
  9. #define clr(x) memset(x,0,sizeof(x))
  10. #define int long long
  11.  
  12. inline int read(){
  13. int s=;bool flag=true;char ch=getchar();
  14. while(!isdigit(ch)){if(ch=='-')flag=false;ch=getchar();}
  15. while(isdigit(ch)){s=(s<<)+(s<<)+ch-'';ch=getchar();}
  16. return flag?s:-s;
  17. }
  18.  
  19. inline void out_put(int x){
  20. if(x<) putchar('-'),x=-x;
  21. if(x>) out_put(x/);
  22. putchar(x%+'');
  23. }
  24.  
  25. inline void print(int x){out_put(x),puts("");}
  26.  
  27. const int N=;
  28. const int inf=0x3f3f3f3f3f3f3f3f3f;
  29. bool vis[N],line[N][N];
  30. int row[N],w[N][N];
  31. int n,m,k;
  32.  
  33. inline bool find(int x){
  34. for(int i=;i<=m;i++)
  35. if(line[x][i] && !vis[i]){
  36. vis[i]=true;
  37. if(!row[i] || find(row[i])){
  38. row[i]=x;
  39. return true;
  40. }
  41. }
  42. return false;
  43. }
  44.  
  45. inline void rebuild(int limit){
  46. clr(line),clr(row);
  47. for(int i=;i<=n;i++)
  48. for(int j=;j<=m;j++)
  49. if(w[i][j]<=limit)
  50. line[i][j]=true;
  51. }
  52.  
  53. inline bool check(int x){
  54. rebuild(x);
  55. int cnt=;
  56. for(int i=;i<=n;i++){
  57. clr(vis);
  58. if(find(i)) cnt++;
  59. }
  60. if(cnt>n-k) return true;
  61. return false;
  62. }
  63.  
  64. signed main(void){
  65. n=read(),m=read(),k=read();
  66. for(int i=;i<=n;i++)
  67. for(int j=;j<=m;j++)
  68. w[i][j]=read();
  69. int l=,r=inf,ans;
  70. while(l<=r){
  71. int mid=(l+r)>>;
  72. if(check(mid))r=mid-,ans=mid;
  73. else l=mid+;
  74. }
  75. print(ans);
  76. return ;
  77. }

【题解】[SCOI2015]小凸玩矩阵的更多相关文章

  1. BZOJ 4443: [Scoi2015]小凸玩矩阵 最大流

    4443: [Scoi2015]小凸玩矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4443 Description 小凸和小方是好 ...

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

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

  3. BZOJ_4443_[Scoi2015]小凸玩矩阵_二分+二分图匹配

    BZOJ_4443_[Scoi2015]小凸玩矩阵_二分+二分图匹配 Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个 ...

  4. 2018.06.30 BZOJ4443: [Scoi2015]小凸玩矩阵(二分加二分图匹配)

    4443: [Scoi2015]小凸玩矩阵 Time Limit: 10 Sec Memory Limit: 128 MB Description 小凸和小方是好朋友,小方给小凸一个N*M(N< ...

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

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

  6. bzoj 4443: [Scoi2015]小凸玩矩阵

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 149  Solved: 81[Submit][Status][Discuss] Description ...

  7. 图论(网络流):[SCOI2015]小凸玩矩阵

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

  8. 【刷题】BZOJ 4443 [Scoi2015]小凸玩矩阵

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

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

    (上不了p站我要死了,侵权度娘背锅) Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,现小凸 ...

  10. [bzoj4443] [loj#2006] [洛谷P4251] [Scoi2015]小凸玩矩阵

    Description 小凸和小方是好朋友,小方给小凸一个 \(N \times M\)( \(N \leq M\) )的矩阵 \(A\) ,要求小秃从其中选出 \(N\) 个数,其中任意两个数字不能 ...

随机推荐

  1. kubernetes的cni0和flannel.1的关系?

    当容器运行之后,节点之间多了个虚拟接口cni0,它是由flanneld创建的一个虚拟网桥叫cni0,供pod本地通信使用.flanneld为每个pod创建一对veth虚拟设备,一端放在容器接口上,一端 ...

  2. Java IO 流-- 字节数组流ByteArrayInPutStream ByteArrayOutPutStream

    字节数组流输于缓冲流,放在jvm内存中,java可以直接操作.我们使用时可以不用关闭,交给GC垃圾回收机制处理. 当然我们为了保持良好习惯和代码一致性也可以加上关闭语句. 当其实我么打开ByteArr ...

  3. 从源码解读Spring如何解决bean循环依赖

    1 什么是bean的循环依赖 循环依赖的原文是circular reference,指多个对象相互引用,形成一个闭环. 以两个对象的循环依赖为例: Spring中的循环依赖有 3 种情况: 构造器(c ...

  4. iOS appium

    1.如果没有安装过Homebrew,先安装homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/ ...

  5. php正则验证手机、邮箱

    //验证电话private function reg_phone($phone){        if (preg_match("/^13[0-9]{1}[0-9]{8}$|15[0189] ...

  6. 前端JS—显示赋值(一)

    一:js代码必须位于<script>js代码</script> 把js代码放到<body>元素的地步,可以改善显示速度 二:js显示数据 使用 window.ale ...

  7. python学习11函数

    '''''''''函数:1.定义:指通过专门的代码组织,用来实现特定的功能的代码段,具有相对独立性,可供其他代码重复调用2.语法:def 函数名([参数]): 函数体[return 返回值]3.函数名 ...

  8. cocos2d 导演,场景

    导演(Director) Cocos2d-x 使用导演的概念,这个导演和电影制作过程中的导演一样!导演控制电影制作流程,指导团队完成各项任务.在使用 Cocos2d-x 开发游戏的过程中,你可以认为自 ...

  9. Spring Boot Starters介绍

    文章目录 Web Start Test Starter Data JPA Starter Mail Starter 结论 对于任何一个复杂项目来说,依赖关系都是一个非常需要注意和消息的方面,虽然重要, ...

  10. CSS样式3

    1.positon:fixed 可以实现网页浏览器上的返回顶部的功能. positon:fixed 表示将当前div块固定在页面的某一个位置(默认为左上角). <!DOCTYPE html> ...