题解:P10417 [蓝桥杯 2023 国 A] 第 K 小的和
abc1856896 · · 题解
题目大意
给定两个序列
设另有一个序列
问
solution
因为
考虑二分。
左右边界都是简单的,一个设为
判断函数也显而易见的:枚举
但这样判断函数的时间复杂度是
考虑优化。
超时的问题出现在判断函数的时间复杂度是
这样,判断函数的时间复杂度是
code
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, m, k, a [100005], b [100005];
bool check ( int x ) {
int sum = 0;
for(int i = 0 ; i < n ; i++ ) {
sum += upper_bound ( b, b + m, x - a[i] ) - b;
}
return sum >= k;
}
signed main(){
cin >> n >> m >> k;
for(int i = 0 ; i < n ; i++ ) {
cin >> a [i];
}
for(int i = 0 ; i < m ; i++ ) {
cin >> b[i];
}
sort( b, b + m );
int l = 0, r = INT_MAX;
while(l + 1 < r ) {
int mid = ( l + r ) / 2;
if (check ( mid ) ) r = mid;
else l = mid;
}
cout << r;
return 0;
}