2026/3/29 15:02:18
网站建设
项目流程
视频网站后台登陆,网站设计的公司叫什么,提供邯郸移动网站建设,如何优化搜索引擎小红的矩阵
时间限制#xff1a;1秒 空间限制#xff1a;256M
网页链接
牛客tracker
牛客tracker 每日一题#xff0c;完成每日打卡#xff0c;即可获得牛币。获得相应数量的牛币#xff0c;能在【牛币兑换中心】#xff0c;换取相应奖品#xff01;助力每日有…小红的矩阵时间限制1秒 空间限制256M网页链接牛客tracker牛客tracker 每日一题完成每日打卡即可获得牛币。获得相应数量的牛币能在【牛币兑换中心】换取相应奖品助力每日有题做丰盈牛币日益多!题目描述小红有一个n × m n×mn×m大小的矩阵矩阵第i ii行第j jj列的元素为i × j i×ji×j小红想知道矩阵中第k kk小的元素是多少。输入描述第一行三个整数n , m , k n,m,kn,m,k。1 ≤ n , m ≤ 1 0 5 , 1 ≤ k ≤ n × m 1≤n,m≤10^5,1≤k≤n×m1≤n,m≤105,1≤k≤n×m。输出描述输出一个整数表示答案。示例1输入3 3 4输出3说明矩阵为1 2 32 4 63 6 9解题思路采用二分查找法确定矩阵中第k kk小的元素初始设置左边界l 0 l0l0、右边界r k rkrk因矩阵第k kk小元素必然不超过k kk每次取中间值m i d midmid统计矩阵中小于等于m i d midmid的元素数量遍历每行i ii该行符合条件的列数为m i n ( m , m i d / i ) min(m, mid/i)min(m,mid/i)累加所有行的数量得到s u m sumsum若s u m ≥ k sum≥ksum≥k说明m i d midmid可能是目标值或偏大调整右边界r m i d − 1 rmid-1rmid−1并将m i d midmid记为候选结果否则调整左边界l m i d 1 lmid1lmid1该方法通过二分将问题转化为多次统计每次统计时间复杂度O ( n ) O(n)O(n)二分次数约30 3030次总复杂度为O ( n l o g k ) O(nlogk)O(nlogk)适配n nn、m mm达1 e 5 1e51e5的规模最终候选结果即为矩阵中第k kk小的元素。代码内容#includebits/stdc.husingnamespacestd;typedeflonglongll;typedefpairll,llpii;constll p1e97;constll N1e510;intmain(){ll n,m,k;cinnmk;ll l0,rk;ll res0;while(lr){ll mid(lr)1;ll sum0;for(ll i1;in;i)summin(m,mid/i);if(sumk){rmid-1;resmid;}elselmid1;}coutresendl;return0;}