zoukankan      html  css  js  c++  java
  • 【codevs1245】最小的N个和

    problem

    solution

    codes

    //动态维护大根堆,贪心减少入队元素个数
    #include<iostream>
    #include<algorithm>
    #include<queue>
    using namespace std;
    const int maxn = 100010;
    int n, a[maxn], b[maxn];
    //q为答案的n个元素。
    priority_queue<int>q;
    //递归输出
    void print(){
        if(q.empty())return ;
        int t = q.top();  q.pop();
        print();
        cout<<t<<" ";
    }
    int main(){
        cin>>n;
        for(int i = 1; i <= n; i++)cin>>a[i];
        for(int i = 1; i <= n; i++)cin>>b[i];
        //step1:排序,让序列单调,后面用单调性减少状态数
        sort(a+1,a+n+1);
        sort(b+1,b+n+1);
        //step2:随便加n个元素作为初始值
        for(int i = 1; i <= n; i++){
            q.push(a[1]+b[i]);
        }
        for(int i = 2; i <= n; i++){
            if(a[i]+b[1]>=q.top())break;//step3因为单调,所以后面的a[i]+b[1]只会更大。
            for(int j = 1; j <= n; j++){
                if(a[i]+b[j]>=q.top())break;//step4:因为单调,所以后面的肯定会更大。
                //step5:如果没有break,则当前元素比答案中的最大值要大,更新答案。
                q.pop();
                q.push(a[i]+b[j]);
            }
        }
        //step6:此时队列中剩下的n各元素就是最小值
        print();
        return 0;
    }
  • 相关阅读:
    网站链接
    CSS 初始化
    常见浏览器+浏览器内核
    sublime及其插件的安装
    数码时钟.js
    每天迁移MySQL历史数据到历史库Python脚本
    python和redis简单交互
    python和mongodb简单交互
    python3与mysql交互
    Red Hat Enterprise Linux 7.2修改主机名(hostname)
  • 原文地址:https://www.cnblogs.com/gwj1314/p/9444740.html
Copyright © 2011-2022 走看看