题目描述
有两个长度为 N 的单调不降序列 ,A,B,在 A,B 中各取一个数相加可以得到 N2 个和,求这 N2 个和中最小的 N 个。
输入格式
第一行一个正整数 N;
第二行 N 个整数 1…A1…N。
第三行 N 个整数 1…B1…N。
输出格式
一行 N 个整数,从小到大表示这 N 个最小的和。
输入输出样例
输入 #1复制
3
2 6 6
1 4 8
输出 #1复制
3 6 7
说明/提示
对于 50%50% 的数据,N≤103。
对于 100%100% 的数据,1≤N≤105,1≤ai,bi≤109。
思路:
看的题解,n^2个和,可以分成n个序列。
A[1]+B[1] <= A[1]+B[2] <= … <= A[1]+B[N]
A[2]+B[1] <= A[2]+B[2] <= … <= A[2]+B[N]
……
A[N]+B[1] <= A[N]+B[2] <= … <= A[N]+B[N]
对于每一个序列,我们维护一个最小值,用优先对列,当某一行一个数被输出,我们就让这行下一值进入优先队列。
代码:
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include