首页 > 其他 > 详细

计蒜客练习题:n个最小和(思想+优先队列)

时间:2019-11-08 23:07:12      阅读:130      评论:0      收藏:0      [点我收藏+]

题面:给出两个包含 n 个整数的数组 A,B。分别在 A, B 中任意出一个数并且相加,可以得到 n^2个和。求这些和中最小的 n 个。
输入格式
输入第一行一个整数n(1≤n≤50000)。接下来一行输入数组 A,用空格隔开。接下来一行输入数组 B,用空格隔开。1<=Ai, Bi<=10^9.
输出格式
从小到大输出最小的 n 个和,用空格隔开。
样例输入
4
1 3 5 7
2 4 6 8
样例输出
3 5 5 7

AC代码:

技术分享图片
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int n, len;
vector<int> v;
int main(void)
{
    cin >> n;
    int A[n], B[n];
    for (int i=1;i<=n;i++) cin >> A[i];
    for (int i=1;i<=n;i++) cin >> B[i];
    sort(A+1, A+n+1);
    sort(B+1, B+n+1);
    for (int i = 1; i <= n; i++)
        for (int j = 1; i*j <= n; j++)
            v.push_back(A[i] + B[j]);
    sort(v.begin(), v.end());
    printf("%d", v[0]);
    for (int i = 1; i < n; i++) printf(" %d", v[i]);
    printf("\n");
    return 0;
}
View Code

这里附上一个写的很想详细的博主链接:

https://blog.csdn.net/y20070316/article/details/50526422

计蒜客练习题:n个最小和(思想+优先队列)

原文:https://www.cnblogs.com/Vikyanite/p/11823341.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!