wikioi 1245 小顶堆

2024-06-08 23:38
文章标签 wikioi 1245 小顶

本文主要是介绍wikioi 1245 小顶堆,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

第一行输入一个正整数N;第二行N个整数Ai 且Ai≤10^9;第三行N个整数Bi,
且Bi≤10^9

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

5

1 3 2 4 5 
6 3 4 1 7

2 3 4 4 5

【数据规模】 对于 100%的数据,满足 1≤N≤100000。


这题刘汝佳白书中190页里有,挺好的堆思想题。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<bitset>
#define INF 100007
using namespace std;
typedef unsigned long long ull;
struct abc
{int sum,i;abc(int sum,int i):sum(sum),i(i){}bool operator<(abc a)const{return sum>a.sum;}
};
priority_queue<abc>heap;
int a[100010],b[100010];
int main()
{int n,i,j;cin>>n;for(i=0;i<n;i++)scanf("%d",a+i);for(i=0;i<n;i++)scanf("%d",b+i);sort(a,a+n);sort(b,b+n);for(i=0;i<n;i++)heap.push(abc(a[i]+b[0],0));for(i=0;i<n;i++){abc it=heap.top();heap.pop();printf("%d%c",it.sum,i==n-1?'\n':' ');if(it.i+1<n)heap.push(abc(it.sum-b[it.i]+b[it.i+1],it.i+1));}return 0;
}


这篇关于wikioi 1245 小顶堆的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043638

相关文章

【Java 优先队列(小顶堆) 分治法 实现合并k个排序链表】

合并k个排序链表 题目:力扣-合并k个排序链表[https://leetcode.cn/problems/vvXgSW/](https://leetcode.cn/problems/vvXgSW/)优先队列(小顶堆)法代码实现 分治法代码实现 题目:力扣-合并k个排序链表https://leetcode.cn/problems/vvXgSW/ 给定一个链表数组,每个链表都已经

堆:什么是大顶堆,什么是小顶堆,堆排序,代码实现堆排序

堆排序代码 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 堆排序___顺序存储{class Program{static void Main(string[] arg

wikioi 1396 伸展树(两个模板)

题目描述 Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就

wikioi 2573 大顶堆与小顶堆并用

题目描述 Description 我们使用黑匣子的一个简单模型。它能存放一个整数序列和一个特别的变量i。在初始时刻,黑匣子为空且i等于0。这个黑匣子能执行一系列的命令。有两类命令: ADD(x):把元素x放入黑匣子;GET:把i加1的同时,输出黑匣子内所有整数中第i小的数。牢记第i小的数是当黑匣子中的元素已非降序排序后位于第i位的元素。 下面的表6_4是一个11个命令的例子:

wikioi 1246 堆或贪心

题目描述 Description 对于一给定的素数集合 S = {p1, p2, ..., pK},  来考虑那些质因数全部属于S 的数的集合。这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它)。这是个对于一个输入的S的丑数集合。 注意:我们不认为1 是一个丑数。 你的工作是对于输入的集合S去寻找集合中的第N个丑数。longint(signed 32-b

wikioi 1052 大顶堆

题目描述 Description     王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不但学习刻苦,而且善于经常总结、完善自己的学习方法,所以他总能在每次考试中得到优异的分数,这一切很大程度上是由于他是一个追求效率的人。     但王钢也是一个喜欢玩的人,平时在学校学习他努力克制自己玩,可在星期天他却会抽一定的时间让自己玩一下,他的爸爸妈妈

wikioi 3031 字符串哗然并匹配查找

题目描述 Description 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词。     文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个)。并且在背诵的单词量尽量多的情况下,还要使选出的文章段落尽量短,这样她就可以用尽量短的时间学习尽可能多的单词了。 输入描述 Input Description

wikioi 2147 bitset+map解决

题目描述 Description 小明是一名天文爱好者,他喜欢晚上看星星。这天,他从淘宝上买下来了一个高级望远镜。他十分开心,于是他晚上去操场上看星星。 不同的星星发出不同的光,他的望远镜可以计算出观测到的星星发出的光的数值W。小明当然想尽可能地多看到星星,于是他每看到一颗星星,就要看看他之前有没有看过这颗星星。但是他看的星星太多了,他根本数不过来,于是他让你帮忙。

WIKIOI 1213 解的个数 题解与分析

1213 解的个数 题目描述 Description 已知整数x,y满足如下面的条件:   ax+by+c = 0 p<=x<=q r<=y<=s   求满足这些条件的x,y的个数。 输入描述 Input Description 第一行有一个整数n(n<=10),表示有n个任务。n<=10 以下有n行,每行有7个整数,分别为:a,b,c,p,q,r,s。均不超过108。

WikiOI 2924 数独挑战

说实话,有了这个程序,我就能通杀那个数独网了。真方便! #include<iostream>using namespace std;int a[9][9];int Line[9],Row[9],S[3][3];bool Flag;void Set(int x,int y,int n){int t=1<<n;Line[x]|=t;Row[y]|=t;S[x/3][y/3]|=t;