蓝桥杯备考:数据结构堆之序列合并

这道题我们固定a[1]和b数组的所有数组合,依次插入到堆里面,然后选n次最小的数,每次选出最小的数的时候,把a[i+1]和b数组的该数组合插入堆里面,直到输出n个数,我们程序就结束

cpp 复制代码
#include <iostream>
#include <queue>
using namespace std;
const int N = 1e5+10;
typedef long long ll;
ll a[N],b[N];
struct node{
	ll sum;
	ll i;
	ll j;
	bool operator< (const node& x)const
	{
		return sum >x.sum;
	}
};
priority_queue <node> heap;
int main()
{
	ll n;
	cin >> n;
	for(int i = 1;i<=n;i++)
	{
		cin >> a[i];
	}
	for(int i = 1;i<=n;i++)
	{
		cin >> b[i];
		heap.push({(a[1]+b[i]),1,i});
	}
	for(int c = 1;c<=n;c++)
    {
    	node t = heap.top(); heap.pop();
    	ll i = t.i; ll sum = t.sum; ll j = t.j;
    	cout << sum << " ";
    	heap.push({(a[i+1]+b[j]),i+1,j});
	}
	
	
	
	
	
	
	return 0;
}
相关推荐
小马学嵌入式~8 小时前
数据结构:队列 二叉树
c语言·开发语言·数据结构·算法
省四收割者10 小时前
Go语言入门(10)-数组
数据结构·经验分享·笔记·vscode·算法·golang
月盈缺11 小时前
学习嵌入式的第二十四天——数据结构——队列和树
数据结构·学习
Y40900116 小时前
Java算法之排序
java·数据结构·笔记·算法
艾莉丝努力练剑18 小时前
【C语言16天强化训练】从基础入门到进阶:Day 6
c语言·数据结构·学习·算法
快去睡觉~19 小时前
力扣1005:k次取反后最大化的数组和
数据结构·算法·leetcode
想不明白的过度思考者19 小时前
初识数据结构——Map和Set:哈希表与二叉搜索树的魔法对决
数据结构·散列表
天意生信云19 小时前
生信分析自学攻略 | R语言数据筛选和修改
数据结构·经验分享·r语言
月盈缺19 小时前
学习嵌入式第二十三天——数据结构——栈
数据结构·学习
fs哆哆1 天前
在VB.net中一维数组,与VBA有什么区别
java·开发语言·数据结构·算法·.net