第K大的数
题目:
数组A和数组B,里面都有n个整数。
数组C共有n^2个整数,分别是:
A[0] * B[0],A[0] * B[1] ...... A[0] * B[n-1]
A[1] * B[0],A[1] * B[1] ...... A[1] * B[n-1]
......
A[n - 1] * B[0],A[n - 1] * B[1] ...... A[n - 1] * B[n - 1]
是数组A同数组B的组合,求数组C中第K大的数。
例如:A:1 2 3,B:2 3 4。
输入格式
3 2
1 2
2 3
3 4
输出样例
9
题解:
#include <bits/stdc++.h>
using namespace std;
long long n,k;
long long a[50005],b[50005];
long long l=1,r=1e18,mid;
int main (){
scanf("%lld%lld",&n,&k);
k=(n*n+1)-k;//比k个数大
for(int i=1;i<=n;i++){
scanf("%lld%lld",&a[i],&b[i]);
}
sort(a+1,a+1+n);
sort(b+1,b+1+n);
while(l<r){
int L,R=n;
long long cnt=0;
mid=(r+l)>>1;
for(L=1;L<=n;L++){
while(a[L]*b[R]>mid&&R>0){
R--;
}
cnt+=R;
}
if(cnt>=k){
r=mid;
}
else{
l=mid+1;
}
}
printf("%lld",l);
}
本文来自博客园,作者:MegaSam,转载请注明原文链接:https://www.cnblogs.com/MegaSamTXL/p/17607144.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?