zoukankan      html  css  js  c++  java
  • minval_优先队列排序

      

    2269: 

    时间限制: 3 Sec  内存限制: 256 MB
    提交: 839  解决: 151
    [提交][状态][讨论版][命题人:外部导入]

    题目描述

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

    输入

    第一行输入一个正整数N(1<=N<=100000);

    第二行N个整数Ai且Ai<=109;第三行N个整数Bi且Bi<=109

    输出

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

    样例输入

    5
    1 3 2 4 5
    6 3 4 1 7
    

    样例输出

    2 3 4 4 5

    来源

    郑州轻工业学院第十届ACM程序设计大赛 

    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <vector>
    
    using namespace std; 
    
    priority_queue<int> Q; // 大的先出队
    priority_queue<int, vector<int>, greater<int>> Q2; // 小的先出队
    
    #define maxn 100000
    int n, m; 
    int num1[maxn], num2[maxn]; 
    
    int main() {
    
        while (cin >> n ) {
            for (int i = 0; i < n; i++) {
                cin >> num1[i]; 
                
            }
            for (int i = 0; i < n; i++) {
                cin >> num2[i]; 
                
            }
            sort(num1, num1 + n);
            sort(num2, num2 + n);
            for (int i = 0; i < n; i++) {
                // 初始化加入 n 个元素
                Q.push(num1[i] + num2[0]);
            }
            int temp; 
            int q; 
            for (int i = 0; i < n; i++){
                for (int j = 1; j < n; j++) { // 不能重复包含之前加过的元素
                    temp = num1[i] + num2[j] ; 
                    q = Q.top(); 
                    Q.pop(); 
                    if (q <= temp) {
                        Q.push(q); 
                        break;
                    }
                    else {
                        Q.push(temp);
                        
                    }
                }
            }
    
            for (int i = 0; i < n; i++) {
                q = Q.top(); 
                Q.pop();
                num1[i] = q; 
            }
            for (int i = n - 1; i >= 0; i--) {
                cout << num1[i]; 
                if (i != 0) {
                    cout << " "; 
                }
            }
            cout << endl; 
        }
        return 0; 
    }
  • 相关阅读:
    MySQL主从复制
    MySQL索引
    MySQL视图(view)
    MySQL表类型和存储引擎
    MySQL事务(三)
    MySQL事务(二)
    MySQL事务(一)
    MySQL事件调度器
    协同过滤推荐算法
    SVD奇异值分解
  • 原文地址:https://www.cnblogs.com/yi-ye-zhi-qiu/p/9393626.html
Copyright © 2011-2022 走看看