【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解

【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解

题目传送门

题解

CSP-S1 补全程序,致敬全 A 的答案,和神奇的预言家。

写一下这篇的题解说不定能加 CSP 2024 的 RP

首先看到 k k k 这么大的一个常数,就想到了二分。然后写一个判断的函数:枚举 A A A 序列里面的数,然后再找 B B B 序列能和 A A A 序列里选出来的数加起来之和小于等于 t t t 即可。

但是,这样的话可能会超时,所以,我们把 B B B 序列的循环改成二分,注意要二分必须在有序的情况下,所以提前排序。时间复杂度 O ( n log ⁡ m ) O(n \log m) O(nlogm)

不开 long long 见祖宗!!!

代码

cpp 复制代码
#include <bits/stdc++.h>
#define lowbit(x) x & (-x)
#define endl "\n"
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define int long long
namespace fastIO {
	inline int read() {
		register int x = 0, f = 1;
		register char c = getchar();
		while (c < '0' || c > '9') {
			if(c == '-') f = -1;
			c = getchar();
		}
		while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
		return x * f;
	}
	inline void write(int x) {
		if(x < 0) putchar('-'), x = -x;
		if(x > 9) write(x / 10);
		putchar(x % 10 + '0');
		return;
	}
}
using namespace fastIO;
int n, m, k, a[100005], b[100005]; 
bool check (int x) {
	int res = 0;
	for (int i = 1; i <= n; i++) {
		res += upper_bound (b + 1, b + m + 1, x - a[i]) - b - 1;
	}
	return res >= k;
}
signed main() {
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	n = read(), m = read(), k = read();
	for(int i = 1; i <= n; i ++) {
		a[i] = read();
	}
	for(int i = 1; i <= m; i ++) {
		b[i] = read();
	}
	sort(b + 1, b + m + 1);
	int l = 0, r = INT_MAX;
	while (l < r) {
		int mid = (l + r) >> 1;
		if (check (mid)) {
			r = mid;
		}
		else l = mid + 1;
	}
	write(l);
	return 0;
}
相关推荐
肥猪猪爸6 分钟前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
readmancynn18 分钟前
二分基本实现
数据结构·算法
萝卜兽编程20 分钟前
优先级队列
c++·算法
盼海28 分钟前
排序算法(四)--快速排序
数据结构·算法·排序算法
一直学习永不止步43 分钟前
LeetCode题练习与总结:最长回文串--409
java·数据结构·算法·leetcode·字符串·贪心·哈希表
Rstln1 小时前
【DP】个人练习-Leetcode-2019. The Score of Students Solving Math Expression
算法·leetcode·职场和发展
芜湖_2 小时前
【山大909算法题】2014-T1
算法·c·单链表
珹洺2 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode
孙同学要努力2 小时前
C++知识整理day1——前置基础知识整理(命名空间、输入输出、函数重载、引用)
开发语言·c++
沐泽Mu2 小时前
嵌入式学习-C嘎嘎-Day05
开发语言·c++·学习