zoukankan      html  css  js  c++  java
  • codevs1245 最小的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<queue>
    #include<algorithm>
    using namespace std;
    int n,a[100010],a1[100010];
    struct maxsum{
    	int s,b;
    	maxsum(int s,int b):s(s),b(b){};
    	bool operator < (const maxsum& rhs) const{return s>rhs.s;}
    };
    priority_queue<maxsum> Q;
    void heb(){
    	for(int i=1;i<=n;i++){Q.push(maxsum(a[i]+a1[1],1));}
    	for(int i=1;i<=n;i++){
    		maxsum sum=Q.top(); Q.pop();
    		a[i]=sum.s;
    		int x=sum.b;
    		if(x+1<=n)Q.push(maxsum(sum.s-a1[x]+a1[x+1],x+1));
    	}
    }
    
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    	for(int i=1;i<=n;i++)scanf("%d",&a1[i]);
    	sort(a+1,a+n+1); sort(a1+1,a1+n+1);
    	heb();
    	for(int i=1;i<=n;i++)printf("%d ",a[i]);
    	return 0;
    }


  • 相关阅读:
    ListBox 绑定之-SelectedItem
    tomcat部署web项目的3中方法
    NET 2.0中的字符串比较和方法
    winform WindowsMediaPlayer 属性
    C语言32个关键字解释
    进程间通讯—自定义消息
    常见符号英文表示
    在vs 中运行C程序
    wpf 不是很明白,先记下
    PenTest-log for ging解决方案
  • 原文地址:https://www.cnblogs.com/codetogether/p/7066689.html
Copyright © 2011-2022 走看看