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

description

题目描述

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

输入格式
第一行给出三个整数 N、M、K。接下来 N 行,每行 M个数字,用来描述这个矩阵。
输出格式
输出选出来的 N个数中第 K大的数字的最小值。

样例
Input
3 4 2
1 5 6 6
8 3 4 3
6 8 6 3
Output
3

数据范围与提示
1≤K≤N≤M≤250,1≤Ai,j≤10^9

solution

KKK大最小值,明显套路往二分上面思考

不妨二分最后的答案

那么问题转化为选择边的边权不超过答案的情况下的最大匹配数≥n−k+1\ge n -k+1nk+1

code

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define maxn 255
int n, m, k, l, r;
bool vis[maxn];
int match[maxn];
int matrix[maxn][maxn];bool find( int x, int lim ) {for( int i = 1;i <= m;i ++ ) {if( ! vis[i] && matrix[x][i] <= lim ) {vis[i] = 1;if( ! match[i] || find( match[i], lim ) ) {match[i] = x;return 1;}}}return 0;
}int check( int x ) {memset( match, 0, sizeof( match ) );int ans = 0;for( int i = 1;i <= n;i ++ ) {memset( vis, 0, sizeof( vis ) );if( find( i, x ) ) ans ++;}return ans;
}int main() {scanf( "%d %d %d", &n, &m, &k );for( int i = 1;i <= n;i ++ )for( int j = 1;j <= m;j ++ ) {scanf( "%d", &matrix[i][j] );r = max( r, matrix[i][j] );}int ans;while( l <= r ) {int mid = ( l + r ) >> 1;if( check( mid ) >= n - k + 1 ) ans = mid, r = mid - 1;else l = mid + 1;}printf( "%d\n", ans );return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷P4971:断罪者(左偏树)

解析 看起来就是左偏树的基本操作啊… 然而就是调不过去 吐了qwq 参考了望月大神的实现 感觉清晰的多 就定义并查集维护的是每个点所在的堆的根节点 一下子少了很多恶心的套娃 代码 #include<bits/stdc.h> using namespace std; #define ll long long #define il inl…

CF1267G-Game Relics【数学期望,dp】

正题 题目链接:https://www.luogu.com.cn/problem/CF1267G 题目大意 给出nnn个物品&#xff0c;你可以进行如下操作 花费xxx获得随机一个物品。花费cic_ici​获得第iii个物品。 1≤n≤100,1≤x≤10000,∑ai≤1041\leq n\leq 100,1\leq x\leq 10000,\sum a_i\leq 10^41≤n≤1…

深入业务成为更好的软件架构师——信息化建设图鉴一二例

软件开发实际上跟英语比较类似&#xff0c;都是一项工具&#xff0c;服务于各行各业。从程序员的个人修养上来讲&#xff0c;一是要研习好软件开发这门技艺&#xff0c;二是要深入到所服务的行业。说到底&#xff0c;软件的终极目标是模拟业务&#xff0c;在此期间常常会有一个…

2020牛客暑期多校训练营(第三场)

比赛链接 题号题目通过率AClam and Fish1453/4902BClassical String Problem1547/6542COperation Love1431/5631DPoints Construction Problem548/2238ETwo Matchings943/4141FFraction Construction Problem1034/6445GOperating on a Graph972/4259HSort the Strings Revisio…

文理分科 (最小割问题)

Description 文理分科是一件很纠结的事情&#xff01;&#xff08;虽然看到这个题目的人肯定都没有纠结过&#xff09; 小P所在的班级要进行文理分科。他的班级可以用一个n*m的矩阵进行描述&#xff0c;每个格子代表一个同学的座位。每位同学必须从文科和理科中选择一科。同学…

NOIP2014洛谷P2296:寻找道路(bfs)

解析 杀鸡焉用AS47 做的巨差的一道题 WA3遍写的巨麻烦复杂度被吊打 qwq 说起来很玄学&#xff0c;但第一交之前就有一种强烈的预感觉得自己会WA 一开始像个傻子一样对有环图上记搜 WA了还不知道为啥… 可能真是傻了吧qwq 过了一会看着lojn50,m800干瞪了会眼后终终终于发现了bu…

P7097-[yLOI2020]牵丝戏【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P7097 题目大意 有两个人在打游戏&#xff0c;开始时每个人有个初始伤害xxx和delay值ddd。 有mmm种道具&#xff0c;每个道具一个回合只能用一次&#xff0c;可以使当前回合玩家伤害初始伤害的ki10000\frac{k_i}{10000}1000…

恭贺微软技术俱乐部苏州站正式成立

今天去苏州微软中国&#xff0c;参加了微软技术俱乐部苏州站的成立大会。大会的历程悉数经历&#xff0c;这会儿仍在为各位大佬、社区领袖的奉献精神所感动。在通过我们公司同事分享的链接报名时就了解到&#xff0c;大会上有苏震巍老师和蒋金楠老师的分享&#xff0c;便笃定了…

I. Intersections

I. Intersections 题意&#xff1a; n行&#xff0c;m列&#xff0c;n * m个交点&#xff0c;当我们处于交点&#xff08;i&#xff0c;j&#xff09;&#xff0c; 如果当前时间位于[k * aij k * bij , (k1) * aij k * bij ),我们可以上下移动 如果当前处于[(k1)* aij k *…

[HNOI2013]消毒 (匈牙利最大匹配)

Description 最近在生物实验室工作的小T遇到了大麻烦。 由于实验室最近升级的缘故&#xff0c;他的分格实验皿是一个长方体,其尺寸为abc&#xff0c;a、b、c 均为正整数。为了实验的方便&#xff0c;它被划分为abc个单位立方体区域&#xff0c;每个单位立方体尺寸为111。用(i,…

YbtOJ-变量观测【鸽笼原理】

正题 题目大意 有nnn个数字开始都是000&#xff0c;要求有qqq次操作。 新建一个观测员&#xff0c;观测其中的kkk个数&#xff0c;当这kkk个数从此刻开始变化量不小于ttt时观测结束。将第iii个数加vvv&#xff0c;并输出此时观测结束的观测员编号。 强制在线 1≤n,q≤2105,1…

11.4模拟:总结

解析 110pts 7010300 写三题&#xff0c;挂三题 qwq T1在不同段之间的衔接处犯了个很脑残的错误 T2双向链表l[i]i-1活活写成了l[i]0 结果还能过样例 T3我两个复制的东西改完上面的没改下面的 。。。 qwq 本次做前两题做的有些太快了 样例过了就直接跳了 结果全部挂掉 以后…

.NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇

前言 最近一直在忙公司和私下的兼职&#xff0c;白天十个小时&#xff0c;晚上四个小时&#xff0c;感觉每天都是打了鸡血似的&#xff0c;精神满满的&#xff0c;连自己那已经学打酱油的娃都很少关心&#xff0c;也有很长一段时间没有更新博客了&#xff0c;特别抱歉&#…

gym 102875A -- Array(未更新完)

gym 102875A – Array 题意&#xff1a; 对于一个数组a&#xff0c;以及数p&#xff0c; q个操作 1.对于区间[l,r]&#xff0c;里面所有数k 2.对于区间[l,r]&#xff0c;里面所有数 * k 3.对于区间[l,r]&#xff0c;里面所有数变成k次幂 4.对于区间[l,r]&#xff0c;输出里面…

[NOI2009] 变换序列 (匈牙利最大匹配)

description … solution 我竟然一眼题&#xff01;&#xff01; 变换后的TTT数组是[0,n)[0,n)[0,n)的排列&#xff0c;变换规则也有&#xff0c;距离DDD也知道 很明显可以求出iii的可能变换对象 这不就是个最大匹配&#xff1f;&#xff1f; 无解就是匹配数量达不到nnn罢了…

YbtOJ-方格填写【插头dp】

正题 题目大意 给出nmn\times mnm的网格填着−1∼4-1\sim 4−1∼4的数字&#xff0c;对于将所有的−1-1−1填上0∼40\sim 40∼4的方案中&#xff0c;定义方案XXX的权值&#xff0c;设在相邻网格之间连线&#xff08;每对只能连一条&#xff09;使得每个网格连出去的边数恰好位…

洛谷P3607:Subsequence Reversal P(区间dp)

解析 很巧妙的题 我一开始的dp设计其实是可以的 只是我误认为它的转移需要n^2 然后尝试把它压掉一维结果越跑越远… 但一个技巧是只从相邻的状态转移 使转移变成O1 代码 #include<bits/stdc.h> using namespace std; #define ll long long const int N52; const int M…

使用 WeihanLi.Npoi 操作 CSV

Intro最近发现 csv 文件在很多情况下都在使用&#xff0c;而且经过大致了解&#xff0c;csv 格式简单&#xff0c;相比 excel 文件要小很多&#xff0c;读取也很是方便&#xff0c;而且也很通用&#xff0c;微软的 ml.net 的示例项目 用来训练模型的数据也是使用的 csv 来保存的…

种类问题

几乎所有种类问题都可以转化成两种模型之一 1.直接维护ans数组 2.统计二维数点问题 前置知识 二维静态数点 以y为第一元素&#xff0c;x为第二元素&#xff0c;原点优先级大于查询点&#xff0c;对所有点&#xff08;原点查询点&#xff09;&#xff0c;然后求 for(int i1;…

「LibreOJ Round #11」Misaka Network 与测试 (网络流跑二分图匹配)

description 研究者们想要测试 Misaka Network&#xff0c;于是他们把 Misaka Network 中的所有妹妹们召集到了一起。 现在妹妹们排成了 N行 M 列&#xff0c;有的位置没有人。现在研究者们给每一个个体的超能力进行了评定&#xff0c;一共有三个能力等级&#xff1a;Level 1 …