当前位置: 首页 > news >正文

4443: [Scoi2015]小秃玩矩阵|二分答案|匈牙利

K大看成第K小各种WA。

。。


K大也就是第nK+1小。所以就能够愉快的二分答案了
二分答案找出比当前答案小的数的位置的坐标。推断一下能否够选出满足不在同一行同一列的nK+1个数,然后就能够愉快的跑匈牙利了,对于一个坐标(x,y)假设满足a[x][y]当前答案。就把第x行向第y列连边,然后跑匈牙利推断最大匹配是否大于nK+1
匈牙利真是跑的飞快,然后就卡成rank1 QAQ

#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
#include<map>
#define ll long long
#define N 1000001
using namespace std;
int sc()
{
    int i=0,f=1; char c=getchar();
    while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}
    while(c>='0'&&c<='9')i=i*10+c-'0',c=getchar();
    return i*f;
}
int a[255][255];
int head[N],nxt[N],lst[N],tim[N],from[N];
int n,m,tot,mx,TI,K;
void insert(int x,int y)
{
    lst[++tot]=y;nxt[tot]=head[x];head[x]=tot;
}
bool Hungary(int x)
{
    for(int i=head[x];i;i=nxt[i])
        if(tim[lst[i]]!=TI)
        {
            tim[lst[i]]=TI;
            if(!from[lst[i]]||Hungary(from[lst[i]]))
            {
                from[lst[i]]=x;
                return 1;
            }
        }
    return 0;
}
bool jud(int x)
{
    int ans=0;tot=0;
    for(int i=1;i<=n;i++)head[i]=0;
    for(int i=1;i<=m;i++)from[i]=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(a[i][j]<=x) insert(i,j);
    for(int i=1;i<=n;i++)
        TI++,ans+=Hungary(i);
    return ans>=K;
}   
int main()
{
    n=sc();m=sc(),K=sc();K=n-K+1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            mx=max(mx,a[i][j]=sc());
    int l=1,r=mx;
    while(l!=r)
    {
        int mid=l+r>>1;
        if(jud(mid))r=mid;
        else l=mid+1;
    }
    cout<<l;
    return 0;
}

相关文章:

  • OPENGL 红宝书实验笔记
  • 智能家居新品迭出 巨头涌入加速产业升级
  • 不谈营收的 SaaS 增长都是耍流氓!
  • “云上贵州”大赛完整诠释大数据三大业态
  • 苹果芯片订单立功 台积电股价创新高
  • 通讯应用Kik推出聊天机器人商店
  • 360回归A股再进一步:上市辅导进展工作报告出炉
  • OTT:全球联网设备超过80亿部,流量增速惊人
  • 《OpenGL ES应用开发实践指南:Android卷》—— 1.6 小结
  • 小米试水线下渠道:五家门店月营业额过千万
  • 昆明视频监控建设行之有效 明年底实现百分百覆盖
  • 《 测试反模式:有效规避常见的92种测试陷阱》—— 2.2 测试类型相关陷阱
  • Gartner AI商业观察:2021年行业解决方案30%营收净增长来自AI
  • IT战略投资创收下滑7% 联想筹钱加码PC核心
  • 为什么美国科技巨头纷纷押注非洲?
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • download使用浅析
  • FastReport在线报表设计器工作原理
  • flutter的key在widget list的作用以及必要性
  • git 常用命令
  • HashMap剖析之内部结构
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • js算法-归并排序(merge_sort)
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • PAT A1120
  • react 代码优化(一) ——事件处理
  • Spring Boot快速入门(一):Hello Spring Boot
  • vue的全局变量和全局拦截请求器
  • 安装python包到指定虚拟环境
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 浮动相关
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 设计模式 开闭原则
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用SAX解析XML
  • 源码安装memcached和php memcache扩展
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 从如何停掉 Promise 链说起
  • #QT(TCP网络编程-服务端)
  • (八十八)VFL语言初步 - 实现布局
  • (二十三)Flask之高频面试点
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一) springboot详细介绍
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET的微型Web框架 Nancy
  • .NET面试题(二)
  • .sdf和.msp文件读取
  • /etc/motd and /etc/issue