zoukankan      html  css  js  c++  java
  • codevs 1245 最小的N个和

    题目描述 Description

    有两个长度为 N 的序列 A 和 B,在 A 和 B 中各任取一个数可以得到 N^2 个和,求这N^2 个和中最小的 N个。

    输入描述 Input Description

    第一行输入一个正整数N;第二行N个整数Ai 且Ai≤10^9;第三行N个整数Bi,
    且Bi≤10^9

    输出描述 Output Description

    输出仅一行,包含 n 个整数,从小到大输出这 N个最小的和,相邻数字之间用
    空格隔开。

    样例输入 Sample Input

    5

    1 3 2 4 5 
    6 3 4 1 7

    样例输出 Sample Output

    2 3 4 4 5

    数据范围及提示 Data Size & Hint

    【数据规模】 对于 100%的数据,满足 1≤N≤100000。

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    using namespace std;
    int a[100001],b[100001],c[100001];
    priority_queue<int,vector<int>,less<int> >bbb;//从大到小的优先级队列,可将less改为greater,即为从小到大
    int main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
        for(int i=1;i<=n;i++)
        scanf("%d",&b[i]);
        sort(a+1,a+n+1);
        sort(b+1,b+n+1);
        for(int i=1;i<=n;i++)
        {
            bbb.push(a[1]+b[i]);
        }
        int sum;
        for(int i=2;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            sum=a[i]+b[j];
            if(sum>=bbb.top())
            {
                break;
            }
            else 
            {
                bbb.pop();
                bbb.push(sum);
            }
        }
        for(int i=1;i<=n;i++)
        {
            c[i]=bbb.top();
            bbb.pop();
        }
        for(int i=n;i>=1;i--)
        {
            printf("%d ",c[i]);
        }
        return 0;
    } 
  • 相关阅读:
    实习期收获(一)
    实习期上班两天感触
    做bbs论坛项目的收获(1)
    ios多线程
    C 预处理小结
    Xcode8 问题
    Unity3d收藏链接/ 小马哥视频
    H5(1)
    ios-loadView
    iOS开发UI篇—程序启动原理和UIApplication
  • 原文地址:https://www.cnblogs.com/sssy/p/6665352.html
Copyright © 2011-2022 走看看