归并排序+堆,P1631 序列合并

news2024/11/25 6:47:39

一、题目

1、题目描述

        

2、输入输出

2.1输入

2.2输出

3、原题链接

序列合并 - 洛谷


二、解题报告

1、思路分析

不难想到

a[0] + b[0] <= a[0] + b[1] <= a[0] + b[2] <= ... <= a[0] + b[n - 1]

a[1] + b[0] <= a[1] + b[1] <= a[1] + b[2] <= ... <= a[1] + b[n - 1]

...

a[n - 1] + b[0] <= a[n - 1] + b[1] <= a[n - 1] + b[2] <= ... <= a[n - 1] + b[n - 1]

我们得到n个非降序列,那么我们类似于归并排序的方式,每次从n个队头取出一个最小元素,取n次即可

快速取n个对头最小用堆维护即可

2、复杂度

时间复杂度: O(NlogN)空间复杂度:O(N)

3、代码详解

 ​
#include <bits/stdc++.h>
// #include <ranges>
// #define DEBUG
using i64 = long long;
using u32 = unsigned;
using u64 = unsigned long long;
constexpr int inf32 = 1E9 + 7;
constexpr i64 inf64 = 1E18 + 7;
constexpr double eps = 1e-9;

void solve() {
    int n;
    std::cin >> n;
    std::vector<int> a(n), b(n);
    for (int i = 0; i < n; ++ i)
        std::cin >> a[i];

    std::priority_queue<std::pair<int, int>> pq;


    for (int i = 0; i < n; ++ i) {
        std::cin >> b[i];
        pq.emplace(-b[i] - a[0], 0);
    }

    int t = n;

    while(-- t) {
        auto [x, i] = pq.top();
        pq.pop();
        if (i + 1 < n)
            pq.emplace(x + a[i] - a[i + 1], i + 1);
        std::cout << -x << ' ';
    }

    std::cout << -pq.top().first;
}


auto FIO = []{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);
    return 0;
} ();

int main() {
    #ifdef DEBUG
        freopen("in.txt", "r", stdin);
        freopen("out.txt", "w", stdout);
    #endif     

    int t = 1;
    // std::cin >> t;
    while (t --)
        solve();

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1986193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何拯救LoRA初始化?LoRA-GA:性能显著提升+收敛速度更快!

文章链接&#xff1a;https://arxiv.org/pdf/2407.05000 亮点直击 提出了 LoRA-GA&#xff0c;一种新颖的 LoRA 初始化方法&#xff0c;通过近似低秩矩阵的梯度与全权重矩阵的梯度来加速收敛。确定了在非零初始化下的缩放因子&#xff0c;该因子确保适配器输出的方差不受适配器…

PCIe学习笔记(17)

延迟容忍报告(LTR)消息 LTR消息可选地用于报告有关其读/写服务延迟容忍度的设备行为。 &#xff08;通过 LTR&#xff0c;PCIe 设备可以告知系统它们能容忍的最大响应延迟是多少&#xff0c;只要系统在这个时间之内对 PCIe 设备提出的请求做出响应即可。&#xff09; LTR消息…

统信UOS微信常见问题

统信UOS微信常见问题 1. 家庭版如何激活&#xff1f; ①注册Union ID账号 ②绑定微信 ③登录Union ID激活系统 2. 应用商店微信qq下载失败&#xff0c;进行系统更新&#xff0c;提示依赖错误&#xff0c;检查更新失败怎么解决&#xff1f; 问题描述 安装应用商店内的应用无法…

【Linux操作系统】关于深度睡眠与浅度睡眠进程的理解

目录 一、可中断的睡眠状态&#xff08;S浅度睡眠状态&#xff09;二、不可中断的睡眠状态&#xff08;D深度睡眠状态&#xff09;三、关于S浅度睡眠状态与D深度睡眠状态的理解 一、可中断的睡眠状态&#xff08;S浅度睡眠状态&#xff09; S&#xff08;sleeping&#xff09;…

利用阿里云镜像仓库创建属于自己的私有镜像仓库

阿里云官网&#xff1a;https://www.aliyun.com/ 在阿里云官网注册账号&#xff0c;然后进入控制台 选择容器镜像服务 创建命名空间 创建镜像仓库 选择命名空间&#xff0c;仓库类型&#xff08;设为私有的话&#xff0c;镜像不能随意拉取&#xff09; 点管理 按以下步骤将…

炒黑豆:营养与美味的黑色宝藏

在众多的美食中&#xff0c;炒黑豆宛如一颗低调的黑色珍珠&#xff0c;散发着独特的魅力。食家巷炒黑豆&#xff0c;看似简单&#xff0c;却蕴含着不简单的营养价值。黑豆本身富含蛋白质、维生素、矿物质等多种营养成分&#xff0c;经过炒制之后&#xff0c;其香味被进一步激发…

(javaweb)Http协议

目录 一.http概述 二.Http-请求协议 三.Http响应协议 四.Http协议解析 一.http概述 ---复制这个位置会自动前面有http 浏览器给服务器发送请求携带请求数据&#xff0c;服务器解析数据&#xff0c;服务器前提需要知道具体格式等等--约定 服务器处理完请求&#xff0c;需要给…

jpg图片怎么批量转为png?jpg图片批量转为png的几种方法

jpg图片怎么批量转为png&#xff1f;在处理大批量的jpg图片&#xff0c;并将它们转换为png格式时&#xff0c;选择合适的工具和策略至关重要。这种转换通常涉及到不同的应用场景和需求&#xff0c;例如在网页设计中需要透明背景&#xff0c;或者在打印工作中需要更高的图像质量…

AOP学习

AOP概述 AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff1a;⾯向切⾯编程&#xff0c;它是⼀种思想&#xff0c;它是对某⼀类事情的集中处理。 什么是SpringAOP? ⽽ AOP 是⼀种思想&#xff0c;⽽ Spring AOP 是⼀个框架&#xff0c;提供了⼀种对 AOP 思…

速看!2025第三届深圳国际生态环境监测产业博览会

2025第三届深圳国际生态环境监测产业博览会 展会主题&#xff1a;生态环境智慧监测创新&#xff0c;助力生态环境高水平保护 展会时间&#xff1a;2025年7月24-26日 展会地点&#xff1a;深圳会展中心&#xff08;福田&#xff09; 主办单位&#xff1a; 广东省环境监测协…

Flutter 学习之旅

本文只针对个人学习所遇问题&#xff0c;以及解决方案进行记录&#xff0c;不深刨原理。 不深刨原理是因为我也才开始学习&#xff0c;讲不明白&#xff0c;有可能还误导大家 &#xff0c;希望多多包涵。 问题一&#xff1a; 如何通过appBar去设置状态栏字体颜色以及状态栏透…

关于消息队列,共享内存相关作业

1>使用消息队列完成两个进程之间相互通信 1.c #include<myhead.h> //消息类型 struct msgbuf {long mtype; //消息类型char mtext[1024];//消息数据 }; #define SIZE sizeof(struct msgbuf)-sizeof(long) int main(int argc, const char *argv[]) {//创建一个进程pid…

虚拟机能访问网页但ping不通百度

最近遇到了奇怪的问题&#xff0c;虚拟机能访问网页&#xff0c;但ping不通百度&#xff0c;记录一下问题的排查过程。 能访问网页&#xff0c;说明DNS、TCP和HTTP没有问题&#xff0c;ping不通&#xff0c;说明ICMP应该出了问题。 首先通过traceroute追踪报文的转发过程&…

算法板子:最短路问题——包含朴素Dijkstra算法、堆优化版的Dijkstra算法、SPFA算法、Floyd算法

目录 1. 几种算法的用途2. Dijkstra算法——求源点到其他所有点的最短路径(不能处理负边权)&#xff08;1&#xff09;朴素Dijkstra算法——适用于稠密图&#xff08;2&#xff09;堆优化版的Dijkstra算法——适用于稀疏图 4. SPFA算法——求源点到其他所有点的最短路径、判断是…

孤独行走的视频素材去哪里找?孤独的人的视频素材哪里找啊

在视频创作和情感表达的项目中&#xff0c;选择合适的孤独行走视频素材尤为重要&#xff0c;因为这种素材能够有效传递人物的情绪状态&#xff0c;增强作品的情感层次。下面将介绍几个优质的视频素材平台&#xff0c;以帮助您更方便地寻找到适合表达孤独与深思的高质量视频素材…

C#基础——泛型

泛型 C# 中的泛型是一种强大的编程特性&#xff0c;它允许你编写类型安全且灵活的代码。泛型允许你定义类、结构体、接口、方法和委托&#xff0c;而不必在编译时指定具体的数据类型。相反&#xff0c;你可以使用类型参数来定义泛型类型或方法&#xff0c;然后在使用时指定具体…

免费的SD-WAN服务

SD-WAN&#xff0c;SASE&#xff0c;零信任是近年来比较火的概念&#xff0c;SD-WAN发展已经很久了&#xff0c;但是真正能够自主研发做SD-WAN的企业其实并不算太多。 比扬云的SD-WAN产品是自主研发的&#xff0c;可控性强&#xff0c;最重要的是具有免费版本&#xff0c;可以免…

C#使用NPOI进行Excel和Word文件处理(二)

文章目录 使用NPOI在C#中处理Excel和Word文件1. 什么是NPOI&#xff1f;2. 安装NPOI2.1 VisualStudio2019引入NPOI 3. 处理Excel文件读取Excel文件写入Excel文件 4. 处理Word文件读取Word文件写入Word文件 总结Github 地址链接参考例子 使用NPOI在C#中处理Excel和Word文件 在C…

软件生命周期(二)

1. 软件生命周期定义 软件生命周期&#xff08;SDLC&#xff09;是软件开始研制到最终废弃不用所经历的各个阶段 – 软件开发模型 2. 瀑布型生命周期模型 瀑布模型规定自上而下&#xff0c;相互衔接的固定次序&#xff0c;如同瀑布流水&#xff0c;逐级下落&#xff0c;具有…

探索全光网技术 | 全光网络技术方案选型建议三(医院场景)

目录 一、场景设计需求二、医院场景拓扑三、部署方式四、产品相关规格说明五、方案优势与特点 注&#xff1a;本文章参考资料为&#xff1a;华三官方资料 - “新华三全光网络3.0解决方案&#xff08;教育&#xff09;”与 锐捷官方资料 - “【锐捷】高校极简以太全光3.X方案设计…