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

这道题我们固定a1和b数组的所有数组合,依次插入到堆里面,然后选n次最小的数,每次选出最小的数的时候,把ai+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;
}
相关推荐
闪电悠米15 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
WL学习笔记15 小时前
堆(数据结构)
数据结构·
wabs66619 小时前
关于图论【卡码网100.最大岛屿的面积的思考】
数据结构·算法·图论
yuannl1021 小时前
图的最短路径Dijkstra
数据结构
fpcc21 小时前
数据结构和算法—拓扑的应用
数据结构·c++·算法
zander2581 天前
138. 随机链表的复制
数据结构·算法·链表
过期动态1 天前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
来一碗刘肉面1 天前
栈在递归中的应用
数据结构·算法
皓月斯语1 天前
程序设计语言的特点
开发语言·数据结构·c++
邪修king1 天前
C++ 进阶终章:异常机制与智能指针全解 —— 从错误处理到 RAII 资源管理,打通现代 C++ 的核心命脉
android·数据结构·c++