1245 最小的N个和
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
题解
题目描述 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。
写在前面:我以后再也不碰没学过的数据结构题目了(论自学的必要性,不要觉得自己什么都会,不看就去写!(/▽╲))
——————————————————————————————————————————————
解题思路:刚开始我拿到这道题发现要用堆写,然后我就崩溃了,因为我不会!我不会!我不会!后来自己看了一点基本操作,又做了几道非常基础的练习才拿过来再写,后来发现不是我想象的那么容易,刚开始我是想到了取a[i]b[j]必定要取a[i-1]b[j]和a[i][j-1],但是我发现数据范围太大,然后就不知道怎么去存储和调用,然后只能去问问Yveh大爷,后来他给我发了个解题思路,然后写出来了……
先对ab排序,然后

就像这样,我们发现让b(或a)的第一个元素去和所有的a(b)中的元素相加并入堆(边入边维护,这里用小根堆),然后进行n次循环,吧堆顶元素弹出,然后堆顶元素更新为原堆顶元素同一行右边的数字,再次维护即可,这样做是一定可以找到前n个最小和的
代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n,len,t,x,a[100001],b[100001],answer[100001];
struct os
{int num,sum,aa;//sum存该元素b中的位置,aa是a数组的位置,num存和
}teap[100001];
int fix()
{int fa=1;while (fa*2<=len-1){int kk=fa*2;if (kk+1<=len-1&&teap[kk].num>teap[kk+1].num) kk++;if (teap[fa].num>teap[kk].num) {swap(teap[fa],teap[kk]);fa=kk;}else break;}return t;
}
void put()
{for (int i=1;i<=n;i++){len++;teap[len].num=a[i]+b[1];teap[len].sum=1;teap[len].aa=i;fix();}
}
main()
{scanf("%d",&n);for (int i=1;i<=n;i++) scanf("%d",&a[i]);for (int i=1;i<=n;i++) scanf("%d",&b[i]);sort(a+1,a+n+1);sort(b+1,b+n+1);memset(teap,127,sizeof(teap));put();int k=0;for (int i=1;i<=n;i++){k++;answer[k]=teap[1].num;teap[1].num=a[teap[1].aa]+b[teap[1].sum+1];teap[1].sum++;fix();  } for (int i=1;i<=k;i++) printf("%d ",answer[i]);
}

【codevs1425】最小的N个和,如何像煞笔一样地写堆相关推荐

  1. IC/FPGA笔试/面试题分析(九)关于FIFO最小深度计算的问题

    IC/FPGA逻辑设计笔试题中最常见的体型莫过于FIFO最小深度的计算了,以前看到过计算FIFO最小深度,需要代入公式,直到看到这篇文档,才觉得使用逻辑分析的方法来看更能让人理解的更为深刻. 文档把计 ...

  2. HDU 6301.Distinct Values-贪心、构造字典序最小的数列 (2018 Multi-University Training Contest 1 1004)...

    HDU6301.Distinct Values 这个题就是给你区间要求区间内的数都不相同,然后要求是字典序最小,直接贪心走一遍,但是自己写的时候,思路没有错,初始化写挫了... 将区间按左端点小的排序 ...

  3. 数据结构与算法之花费铜板最小和利润最大题目

    数据结构与算法之花费铜板最小和利润最大题目 目录 花费铜板最小 获得利润最大 1. 花费铜板最小 题目描述 注:PriorityQueue(优先队列),一个基于优先级堆的无界优先级队列.实际上是一个堆 ...

  4. 微软编程题:寻找最小的k个值

    转载自:http://blog.csdn.net/v_JULY_v/article/details/6370650 寻找最小的k个数 题目描述:5.查找最小的k个元素 题目:输入n个整数,输出其中最小 ...

  5. 【Luogu2085】最小函数值(优先队列)

    problem 给定n个二次函数(ai,bi,ci > 0) 求前m小的fi(x)值,x>0 n, m < 1e4. solution 因为都大于0了,所以全都是单增的..x=1 时 ...

  6. 【剑指Offer】最小的k个数---大顶堆 Java

    题目:输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 求数组中最小(最大)的n个数通常可以使用大顶堆(小顶堆) ...

  7. 最小的K个数(手写大顶堆和用优先级队列比较)

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 题目链接:https://www.nowcoder.com/prac ...

  8. 基于最小错误率的贝叶斯决策实现手写数字识别

    基于最小错误率的贝叶斯决策实现手写数字识别 1.实验目的 2.实验方法及步骤 (1)平台搭建 (2)特征描述 (3)建立最小错误率贝叶斯决策分类器 (4)实现手写数字识别 3.实验结果 4.实验结果讨 ...

  9. 异步FIFO最小深度的计算

    异步FIFO通常用于在两个时钟域间传输数据,并且通常情况下,写数据的速率是要比读数据的速率快的,因此,就存在FIFO最小深度的一个问题,以防止在数据传输时发生溢出,造成数据的丢失. 在计算FIFO最小 ...

最新文章

  1. python 类装饰器 __set___python装饰器代替set get方法实例
  2. 学python需要学数据库吗-python可以使用什么数据库
  3. 这份思科设备命令大全火了~
  4. vue代码生成器可视化界面_手把手教你基于SqlSugar4编写一个可视化代码生成器(生成实体,以SqlServer为例,文末附源码)...
  5. 安卓开发之探秘蓝牙隐藏API
  6. linux-使用基础-自动补全-快捷键-历史命令-别名
  7. mysql5.5默认引擎_InnoDB 作为默认存储引擎(从mysql-5.5.5开始)
  8. 防伪拉线 CCD 纠偏控制器
  9. 普通html优化处理,iOS 数据优化之处理HTML字符串
  10. php单独使用blade模板引擎,laravel 基础教程 —— Blade 模板引擎
  11. 学习笔记4--惯性导航及总结
  12. WIN7下如何删除需要管理员权限才能删除的文件夹
  13. 无法复制文件到远程桌面的解决办法
  14. 自动文本摘要经典模型TextSum运行录
  15. jq富文本_jQuery富文本编辑器Notebook
  16. 百度收录-如何使用API提交
  17. 《计算机网络--自顶向下方法》第三章--运输层
  18. [论文阅读]Contextual Instance Decoupling for Robust Multi-Person Pose Estimation
  19. 【一】软件测试的起源与发展介绍
  20. 执行service iptables status时报错

热门文章

  1. 补习系列(4)-springboot 参数校验详解
  2. Python3 threading的多线程管理中的线程管理与锁
  3. 《跟唐老师学习云网络》 - ip命令
  4. cmdb python 采集虚拟机_Python编程(三十四):CMDB后台管理、封装自定义JS组件、前端td标签定制显示内容及属性...
  5. 机器学习十大经典算法之KNN最近邻算法
  6. C++接收字符串数组_电脑编程 你该知道的字符知识 C语言程序设计字符数组全归纳...
  7. python项目计划_2017年vn.py项目计划
  8. linux 磁盘分区对齐,linux查看硬盘4K对齐方法
  9. Vue框架搭建快速入门
  10. kafka版本_Apache Kafka 版本演进及特性介绍