https://www.luogu.org/problem/show?pid=1631

题目描述

有两个长度都是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:

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

  1. 3 6 7
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <cstdio>
  4. #define N 100015
  5.  
  6. using namespace std;
  7.  
  8. int n,size,a[N],b[N];
  9. int heap[N],ans[N];
  10.  
  11. void push(int x)
  12. {
  13. heap[++size]=x;
  14. int now=size,next;
  15. while(now>)
  16. {
  17. next=now/;
  18. if(heap[next]>=heap[now]) break;
  19. swap(heap[next],heap[now]);
  20. now=next;
  21. }
  22.  
  23. }
  24.  
  25. void pop()
  26. {
  27. heap[]=heap[size--];
  28. int now=,next;
  29. while(now*<=size)
  30. {
  31. next=now*;
  32. if(next<size&&heap[next]<heap[next+]) next++;
  33. if(heap[now]>=heap[next]) break;
  34. swap(heap[now],heap[next]);
  35. now=next;
  36. }
  37. }
  38.  
  39. int main()
  40. {
  41. scanf("%d",&n);
  42. for(int i=;i<=n;i++) scanf("%d",&a[i]);
  43. for(int i=;i<=n;i++) scanf("%d",&b[i]);
  44. sort(a+,a+n+);
  45. sort(b+,b+n+);
  46. for(int i=;i<=n;i++) push(a[]+b[i]);
  47. for(int i=;i<=n;i++)
  48. for(int j=;j<=n;j++)
  49. {
  50. if(heap[]>a[i]+b[j])
  51. {
  52. pop();
  53. push(a[i]+b[j]);
  54. }
  55. else break;
  56. }
  57. for(int i=;i<=n;i++)
  58. {
  59. ans[i]=heap[];
  60. pop();
  61. }
  62. while(n--)
  63. {
  64. printf("%d ",ans[n+]);
  65. }
  66. return ;
  67. }

优先队列T2ge

P1631 序列合并 洛谷的更多相关文章

  1. 洛谷P1631 序列合并

    P1631 序列合并 236通过 657提交 题目提供者xmyzwls 标签堆 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 为什么不行? 题目描述 有两个长度都是N的序列A和B,在A和B中 ...

  2. P1631 序列合并

    P1631 序列合并 有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到N^2N2个和,求这N^2N2个和中最小的N个. 对于100%的数据中,满足1<=N<=100000. ...

  3. 洛谷 - P1631 - 序列合并 - 堆

    https://www.luogu.org/problemnew/show/P1631 序列a中每个数首先都和序列b中的最小元素配对(虽然好像不是很必要这么早插进来?) 每次从堆顶取出最小的和输出答案 ...

  4. [HNOI2009]双递增序列(洛谷P4728)+小烈送菜(内部训练题)——奇妙的dp

    博主学习本题的经过嘤嘤嘤: 7.22 : 听学长讲(一知半解)--自己推(推不出来)--网上看题解--以为自己会了(网上题解是错的)--发现错误以后又自己推(没推出来)--给学长发邮件--得到正确解法 ...

  5. 洛谷 P1631 序列合并

    题意简述 有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到N^2个和,求这N^2个和中最小的N个. 题解思路 大根堆,先存入n个和,再比较大小,改变堆中元素. 代码 #include & ...

  6. 洛谷 P1631 序列合并(优先队列)

    传送门 解题思路 首先读入a.b数组后,sort一遍(从小到大),然后把a[1]+b[1],a[2]+b[1],a[3]+b[1]……a[n]+b[1]全部加入一个优先队列q(小根堆). 然后从一到n ...

  7. bzoj 1858: [Scoi2010]序列操作 || 洛谷 P2572

    记一下:线段树占空间是$2^{ceil(log2(n))+1}$ 这个就是一个线段树区间操作题,各种标记的设置.转移都很明确,只要熟悉这类题应该说是没有什么难度的. 由于对某区间set之后该区间原先待 ...

  8. Luogu P1631 序列合并

    题目 开一个堆,先把所有\(a[i]+b[1]\)压进优先队列. 然后每次把最小的取出来,把对应的\(a[i]\)的下一个\(b[j]\)拿出来加进去. #include<bits/stdc++ ...

  9. 【洛谷】P1631: 序列合并

    P1631 序列合并 题目描述 有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到N2个和,求这N2个和中最小的N个. 输入输出格式 输入格式: 第一行一个正整数N: 第二行N个整数Ai​ ...

随机推荐

  1. (Nginx+Apache)实现反向代理与负载均衡

    反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度.因此也可以考虑使用这种技术,让代理服务器将请求均匀转发给多台内部Web服务器之一上, ...

  2. 镜像中的 Everything, GnomeLive ,KdeLive ,livecd ,NetInstall的区别?

    everything: 对完整版安装盘的软件进行补充,集成所有软件 GnomeLive , GNOME桌面版 KdeLive , KDE桌面版 livecd 光盘上运行的系统 ,NetInstall ...

  3. php高效率对一维数组进行去重

    $input = array("a" => "green", "red", "b" => "gre ...

  4. Context namespace element 'annotation-config' and its parser class [org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser]

    严重: Exception sending context initialized event to listener instance of class org.springframework.we ...

  5. 【C++】异常简述(二):C++的异常处理机制

    上文简述了在C语言中异常的处理机制,本文主要讲解C++中的异常处理. 一.异常的语法格式 在C++中,异常的抛出和处理主要使用了以下三个关键字:try. throw . catch.其格式如下: 当我 ...

  6. webpack3整理(第一节/满三节)

    一.css文件打包到js中(loader的三种写法) //第一种写法:直接用use. module: { rules: [{ test: /\.css$/, use: ['style-loader', ...

  7. adobe开发软件激活

    稳定支持至2017版本系列的adobe开发软件破解激活 本内容属原创,转载请注明出处!   以激活AE CC2017为例演示: 第一步打开软件第二步在产品列表中选择你所安装的产品(注意区分 32 位和 ...

  8. 【ARM开发板】迅为IMX6开发板QT下LVDS和HDMI双屏异显

    本文转自迅为论坛:http://www.topeetboard.com 平台:迅为-IMX6开发板 首先开发板分别连接9.7寸屏和HDMI显示器,然后使用MfgTool工具烧写QT系统,然后拨码开关设 ...

  9. idea 中pom.xml依赖版本号报错(报红,如下图所示)

    1.maven工程中出现的错误 2.解决办法:file->setting->Maven 如果还没好的话请尝试以下方法:

  10. 面包屑 asp代码记录 newsmulu_class 内部函数

    'id 这里其实是 classId 'mbStr1 最右边的栏目模板 由于是当前本页面 就不带链接了 建议默认值:<span class='mbxC'>$title</span> ...