zoukankan      html  css  js  c++  java
  • P1631 序列合并

    题目描述

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

    输入输出格式

    输入格式:

    第一行一个正整数N;

    第二行N个整数Ai,满足Ai<=Ai+1且Ai<=10^9;

    第三行N个整数Bi, 满足Bi<=Bi+1且Bi<=10^9.

    【数据规模】

    对于50%的数据中,满足1<=N<=1000;

    对于100%的数据中,满足1<=N<=100000。

    输出格式:

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

    输入输出样例

    输入样例#1:
    3
    2 6 6
    1 4 8
    输出样例#1:
    3 6 7

    需要注意一下
    priority_queue比heap慢
    make_heap比pop_heap慢
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<queue>
     6 #include<algorithm>
     7 using namespace std;
     8 const int MAXN=1000001;
     9 priority_queue<int>q;
    10 void read(int & n)
    11 {
    12     char c='+';int x=0;int flag=0;
    13     while(c<'0'||c>'9')
    14     {
    15         c=getchar();
    16         if(c=='-')flag=1;
    17     }
    18     
    19     while(c>='0'&&c<='9')
    20         x=x*10+c-48,c=getchar();
    21     if(flag==1)n=-x;
    22     else n=x;
    23 }
    24 int n,tot;
    25 int a[MAXN],b[MAXN],c[MAXN];
    26 int main()
    27 {
    28     read(n);
    29     for(int i=1;i<=n;i++)
    30     read(a[i]);
    31     for(int i=1;i<=n;i++)
    32     read(b[i]);
    33     for(int i=1;i<=n;i++)
    34         c[i]=a[1]+b[i];
    35     make_heap(c+1,c+n+1);
    36     for(int i=2;i<=n;i++)
    37     {
    38         for(int j=1;j<=n;j++)
    39         {
    40             if(a[i]+b[j]<c[1])
    41             {
    42                 //q.push(a[i]+b[j]);
    43                 c[1]=a[i]+b[j];
    44                 pop_heap(c+1,c+n+1);
    45             }
    46             else break;
    47         }
    48     }
    49     //priority_queue<int,vector<int>,greater<int> >p;
    50     make_heap(c+1,c+n+1,greater<int>());
    51     int k=n;
    52     for(int i=1;i<=n;i++)
    53     {
    54         printf("%d ",c[1]);
    55         pop_heap(c+1,c+1+k,greater<int>());
    56         k--;
    57     }
    58     return 0;
    59 }
     
  • 相关阅读:
    [整理]解析Json需要设置Mime
    [整理]IE11中的WebGL探秘:渲染速度超Chrome
    [转载]详解主流浏览器多进程架构:Chrome、IE
    [转载]为什么浏览器会使用多进程架构
    [整理]win7下VS2010遇到内存不足解决方发
    [整理]WebAPI中应用oData
    [转载]NodeJS优缺点及适用场景讨论
    [转载]HTML5 真的会消灭原生App吗?
    [转载]微软VS2015支持Android和iOS编程
    VC++调试基础
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/7044887.html
Copyright © 2011-2022 走看看