序列合并
来源:互联网 发布:淘宝网渔具店 编辑:程序博客网 时间:2024/06/05 21:18
QAQ
我们首先将数组a,b分别排序。
然后开一个小根堆
a1+b1,a1+b2……a1+bn
a2+b1,a2+b2……a2+bn
………………….
an+b1,an+b2……an+bn
首先将a1+b1,a2+b1……an+b1放入小根堆中
然后查询最小值,输出,再将输出的a[i]+b[前一个+1],放入小根堆,操作n次,输出就行了
直接用优先队列就行了
#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<queue>using namespace std;int a[100100],b[100100];struct node{ int an,w,val; bool operator<(const node &v) const{ return v.val<val; }};priority_queue <node> q;int main(){ int w; scanf("%d",&w); for(int i=1;i<=w;i++) scanf("%d",&a[i]); for(int i=1;i<=w;i++) scanf("%d",&b[i]); sort(a+1,a+w+1); sort(b+1,b+w+1); for(int i=1;i<=w;i++) { node y; y.val=a[i]+b[1]; y.an=i,y.w=1; q.push(y); } for(int i=1;i<=w;i++) { node opt=q.top(); printf("%d ",opt.val); q.pop(); node s; s.val=a[opt.an]+b[opt.w+1]; s.w=opt.w+1; s.an=opt.an; q.push(s); } return 0;}
阅读全文
0 0
- 序列合并
- 合并序列
- 合并两个有序序列
- 合并两个有序序列
- 合并两个有序序列
- 合并两个排序序列
- 整数序列合并问题
- 合并(序列)流
- 洛谷 P1631 序列合并
- 洛谷P1631 序列合并
- 洛谷P1631 序列合并
- 洛谷 P1631 序列合并
- 合并两个有序序列
- 洛谷 P1631 序列合并
- 洛谷P1631 序列合并
- 洛谷 P1631 序列合并
- 洛谷P1631 序列合并
- 合并两个序列
- 技术文章|详解个性化推荐五大最常用算法
- 文章标题
- POJ-1426--Find The Multiple---BFS广搜
- 组合数学
- POJ 3469 Dual Core CPU(最小割)
- 序列合并
- 【模板】强连通分量的kosaraju算法实现
- cmake使用示例与整理总结
- Linux初始
- 归并排序算法(递归与非递归)
- JQUERY中attr()和css()的区别
- js实现map功能
- 文章标题
- 使用Typescript开发node.js项目——简单的环境配置