首页 > 其他分享 >序列合并

序列合并

时间:2024-01-20 17:12:00浏览次数:24  
标签:队列 值为 元素 合并 pair second 序列 first

#include<cstdio>  // 引入cstdio库,用于输入输出流操作  
#include<queue>   // 引入queue库,用于使用优先队列数据结构  
using namespace std;  // 使用命名空间std,以便简化代码书写  
  
int a[100005]={}, b[100005]={}, to[100005]={},i, n;  // 声明并初始化数组a、b、to和变量i、n  
priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > >q;  // 声明一个优先队列q,用于存储pair类型的元素,队列中的元素按降序排列  
  
int main()  // 主函数,程序的入口点  
{  
    scanf("%d", &n);  // 从标准输入读取一个整数,并存储到变量n中  
    for (i = 1; i <= n; i++)  // 循环n次,每次读取一个整数  
        scanf("%d", &a[i]);  // 从标准输入读取一个整数,并存储到数组a的第i个位置  
    for (i = 1; i <= n; i++)  // 再次循环n次,进行后续的操作  
    {  
        scanf("%d", &b[i]); to[i] = 1;  // 从标准输入读取一个整数,并存储到数组b的第i个位置,同时将to[i]设为1  
        q.push(pair<int, int>(a[1] + b[i], i));  // 将一个pair类型的元素插入到优先队列q中,该元素的first值为a[1] + b[i],second值为i  
    }  
    while (n--)  // 当n大于0时,循环执行以下操作  
    {  
        printf("%d ", q.top().first);  // 输出队列q顶部的元素的first值(即a[1] + b[i]的值)  
        i = q.top().second; q.pop();  // 获取队列q顶部的元素的second值(即i),并从队列中删除该元素  
        q.push(pair<int, int>(a[++to[i]] + b[i], i));  // 将一个pair类型的元素插入到优先队列q中,该元素的first值为a[to[i]+1] + b[i],second值为i  
    }  
    return 0;  // 返回0,表示程序正常结束  
}

 

标签:队列,值为,元素,合并,pair,second,序列,first
From: https://www.cnblogs.com/iswuyi/p/17976765

相关文章

  • 无涯教程-PDFBox - PDF合并(Merge)
    在上一章中,无涯教程已经看到了如何将给定的PDF文档拆分为多个文档。现在学习如何将多个PDF文档合并为一个文档。合并多个PDF文档您可以使用名为PDFMergerUtility的类将多个PDF文档合并为一个PDF文档,该类提供了将两个或多个PDF文档合并为一个PDF文档的方法。以下是合并多个PD......
  • 数字序列
    首先来看一下蓝书上面的两个思考题一.将一个序列\(A\)改成单调不下降序列,最少需要修改多少个数?答:用\(A\)的长度减去其最长单调不下降子序列的长度即可那如果在最少修改数的基础上,我要让每个数改变的绝对值之和的最小值最小怎么办?首先,这根“MakingtheGrade”这道题目很像,所......
  • Vue3 Diff算法之最长递增子序列,学不会来砍我!
    专栏分享:vue2源码专栏,vue3源码专栏,vuerouter源码专栏,玩具项目专栏,硬核......
  • 操作序列计数加强加强加强加强版(polylog)
    哎跟风发一下。前边的工作类似,设\(F_i(x)\)表示从高到低考虑到了第\(i\)位,且第\(i\)位向下退\(x\)的方案数,其中初值为\(F_0(x)=1\),根据转移可以归纳出这是一个\(i\)次多项式。然后就有经典的插值做法,可以做到\(O(n^3)\),但是不够strong,考虑不去维护点值,而是维护系数......
  • 阿里SDM序列召回模型
    背景这是阿里2019年发表的一篇用于召回阶段的序列建模论文,这篇论文主要解决了两个问题:1.用户可能有多个兴趣(这篇论文的多个兴趣是指用户是否购买一个商品可能会受颜色、品牌、店铺等多个因素影响),如何建模多个兴趣2.用户的兴趣可以分为短期兴趣(当前session),长期兴趣,如何同时建......
  • 为什么double会被序列化为NaN
    提问为什么double会被序列化为NaN回答世界上存在Double.NaN这个东西,他被序列化就会成为NaNexample//Seehttps://aka.ms/new-console-templateformoreinformationusingSystem.Globalization;usingNewtonsoft.Json;usingNewtonsoft.Json.Converters;Console.Writ......
  • 无容量限制的出栈序列验证——模拟
    #include<iostream>#include<stack>usingnamespacestd;//stack<int>q;//栈qintn,m,t;constintN=1100;inta[N],sum=1;//入栈队列a,待检验队列b,计数器sumintmain(){ cin>>m>>n>>t;for(inti=1;i<=n;i++) cin>>a[i]; whi......
  • Git将某个文件合并到指定分支
    企业开发中,经常会单独拉分支去做自己的需求开发,但是某些时候一些公共的配置我们需要从主线pull,这时候整个分支merge显然不合适1.切换至待合并文件的分支gitcheckout<branch>2.将目标分支的单个文件合并到当前分支gitcheckout<目标分支>--<文件路径>3.提交合并后的......
  • 【学习笔记】线段树合并
    一.普通线段树合并线段树合并就是建立一棵新的线段树保存原有的两棵线段树的信息。两棵线段树当前要合并的点所表示的区间是一样的。线段树合并的过程很简单。如果A有p位置,B没有,新的线段树p位置赋成A,返回A;如果B有p位置,A没有,新的线段树p位置赋成B,返回A;如果合并到叶子结......
  • NC91 最长上升子序列(三)
    https://www.nowcoder.com/practice/9cf027bf54714ad889d4f30ff0ae5481?tpId=117&rp=1&ru=%2Fexam%2Foj&qru=%2Fexam%2Foj&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D117&difficulty=&j......