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

这道题我们固定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;
}
相关推荐
smj2302_796826527 小时前
解决leetcode第3934题最短唯一子数组
数据结构·python·算法·leetcode
iiiiyu8 小时前
面向对象和集合编程题
java·开发语言·前端·数据结构·算法·编程语言
变量未定义~8 小时前
最长回文子串
数据结构·算法
代码中介商8 小时前
AVL树:自平衡二叉搜索树的奥秘
数据结构
玛卡巴卡ldf9 小时前
【LeetCode 手撕算法】(多维动态规划)不同路径、最小路径和、最长回文子串、最长公共子序列、编辑距离
java·数据结构·算法·leetcode·动态规划·力扣
被AI抢饭碗的人9 小时前
算法:数据结构
数据结构·算法
淞綰10 小时前
c语言的练习-字符串的练习-寻找最长连续字符以及出现次数
c语言·数据结构·学习·算法·c语言的练习
qq_2965532710 小时前
[特殊字符] 搜索插入位置:从O(n)到O(log n)的优雅进化
数据结构·算法·面试·分类·柔性数组
凯瑟琳.奥古斯特10 小时前
力扣3654:二维矩阵连续空位统计
数据结构·数据库·算法·职场和发展
故事和你9111 小时前
洛谷-【图论2-2】最短路3
开发语言·数据结构·c++·算法·动态规划·图论