2024牛客五一集训派对day4 G.Game of Swapping Numbers

题目

思路:

补充证明:

1、当n > 2时,至少有两个区间是ai > bi(设为正) 或 ai < bi(设为逆);

2、当 最优操作执行完后,任意两个区间都有交集;

3、又因为当两个区间有交集(无论是相交还是包含)并且同正或同逆时,对这两个区间进行操作不会影响答案

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
#define fi first
#define se second
#define lson p << 1
#define rson p << 1 | 1
const int maxn = 1e6 + 5, inf = 1e18, maxm = 4e4 + 5;
const int N = 1e6;
const int mod = 1e9 + 7;
// const int mod = 998244353;
//const __int128 mod = 212370440130137957LL;
//  int a[1005][1005];
// bool vis[505][505];
int n, m;
int a[maxn];
int b[maxn];
string s;// struct Node{
//     int a, b;
//     // int val, id;
//     bool operator<(const Node &u)const{
//         
//     }
// }node[maxn];//long long ? maxn ? n? m?
void solve(){int res = 0;int k;cin >> n >> k;for(int i = 1; i <= n; i++){cin >> a[i];} for(int i = 1; i <= n; i++){cin >> b[i];}vector<int> l(n + 5), r(n + 5);for(int i = 1; i <= n; i++){l[i] = min(a[i], b[i]);r[i] = max(a[i], b[i]);}if(n == 2){if(k % 2 == 1){swap(a[1], a[2]);}res = abs(a[1] - b[1]) + abs(a[2] - b[2]);cout << res << '\n';return; }sort(l.begin() + 1, l.begin() + n + 1, greater<int>());sort(r.begin() + 1, r.begin() + n + 1);for(int i = 1; i <= n; i++){res += abs(a[i] - b[i]);}for(int i = 1; i <= min(n, k); i++){//让最大的l和最小的r配对(即让两个无交集的、距离最大的区间配对),进行一次操作,然后第二大的l和第二小的l配对,进行一次操作,...,每进行一次操作,产生2*(l[i]-r[i])的贡献,//每进行一次操作,设新生成的两个区间为[l[i], r[i]], [l[j], r[j]],l[i]和l[j]会小于所有r,同理r[i],r[j]会大于所有l,因此这两个区间对答案不再有贡献res += max(0LL, 2LL * (l[i] - r[i]));}cout << res << '\n';
}   signed main(){ios::sync_with_stdio(0);cin.tie(0);int T = 1;
//    cin >> T;while (T--){solve();}return 0;
}

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

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

相关文章

拉普拉斯丨独家冠名2024年度ATPV技术分论坛,助力产业科技持续创新

为了进一步促进行业技术交流&#xff0c;推进光伏行业发展及标准建设的进程&#xff0c;针对高效电池&#xff0c;领跑组件&#xff0c;新产品认证及应用等技术专题及国内外光伏标准的最新进程&#xff0c;由中国绿色供应链联盟光伏专委会&#xff08;ECOPV&#xff09;指导的2…

对比试验系列:Faster—RCNN配置及训练自己数据集

一、源码下载 GitHub - bubbliiiing/faster-rcnn-pytorch: 这是一个faster-rcnn的pytorch实现的库&#xff0c;可以利用voc数据集格式的数据进行训练。这是一个faster-rcnn的pytorch实现的库&#xff0c;可以利用voc数据集格式的数据进行训练。. Contribute to bubbliiiing/fa…

JavaScript百炼成仙自学笔记——12

函数七重关之五&#xff08;自执行函数&#xff09; 什么时候用它&#xff1f; 很多时候&#xff0c;我们只想执行一个函数&#xff0c;却无所谓这个函数叫什么名字。那么这种情况下就可以考虑使用自执行函数。 {function(){console.log(123);} }(); 这就是一个简单的自执行的…

Day02-zabbix自定义监控详解

Day02-zabbix自定义监控详解 十、弥补监控死角-自定义监控10.1 概述10.2 自定义监控全流程1&#xff09;客户端a&#xff09;通过命令、脚本取出对应的值b&#xff09;创建键值与重启 2&#xff09;服务端a&#xff09;服务端手动测试b&#xff09; web页面&#xff1a;创建监控…

本地部署eXtplorer文件管理器并安装内网穿透构建私人云存储服务器

文章目录 1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1. 前言 通过互联网传输文件&#xff0c;是互联网最重要的应用之一&#xff0c;无论是…

数据结构---第十一天(判断题)

二、判断题 1.设计中,通常使用E-R图建立数据库的概念模型。 A. 对 B. 错 2.HAVING子句只能用在GROUP BY子句之后。 A. 对 B. 错 3. SELECT 语句中,LIKE用于描述模糊的数据项,可构造模糊查询。 A. 对 B. 错 4. 主键可以取重复值。 A. 对 B. 错 5. E-R图向关系模型转换时…

vue3父组件传值给子组件

// 父组件 在父组件中&#xff0c;使用 v-bind 的缩写 : 来动态地绑定 currentSelected 到子组件的 prop。这样&#xff0c;当 currentSelected 的值改变时&#xff0c;子组件的 prop 也会自动更新。 <template><div class"filter"><selectDate :cur…

websevere服务器从零搭建到上线(一)|阻塞、非阻塞、同步、异步

文章目录 数据准备(阻塞和非阻塞)、数据读写(同步和异步)小总结&#xff08;陈硕老师的总结&#xff09; 知识拓展同步执行实例异步编程实例 八股 数据准备(阻塞和非阻塞)、数据读写(同步和异步) 无论是什么样的IO都包含两个阶段&#xff1a;数据准备和数据读写。 我们的网络IO…

1.6 Java全栈开发前端+后端(全栈工程师进阶之路)-前置课程Jdbc编程,使用Java通过Jdbc对数据库进行基础操作

原理图 用java代码实现连接数据库&#xff08;mysql&#xff09;的操作 因为数据库连接需要使用到API和URL&#xff0c;下面简单介绍下API和URL的概念&#xff0c; API&#xff1a; Application Programming Interface应用程序编程接口&#xff0c;就是一套类库 Java中的AP…

KaiwuDB 解析器之语义解析

KaiwuDB 解析器介绍 解析器是数据库系统的重要组成部分之一&#xff0c;主要的功能是将客户端输入的 SQL 语句分解为语法单元&#xff0c;然后将这些语法单元转化成数据库内部可识别的数据结构&#xff0c;最终生成数据库可以执行的计划。 KaiwuDB 的一条 SQL 执行的整个生命…

SQL 基础 | AVG 函数的用法

在SQL中&#xff0c;AVG()是一个聚合函数&#xff0c;用来计算某个列中所有值的平均值。 它通常与GROUP BY子句一起使用&#xff0c;以便对分组后的数据进行平均值计算。 AVG()函数在需要了解数据集中某个数值列的中心趋势时非常有用。 以下是AVG()函数的一些常见用法&#xff…

Java集合排序

1. 集合排序API 1.1 集合排序概述 集合排序是指对一个集合中的元素按照特定规则进行重新排列&#xff0c;以使得集合中的元素按照预定义的顺序呈现。 在集合排序中&#xff0c;通常需要定义一个比较规则&#xff0c;这个比较规则用于决定集合中的元素在排序后的顺序。元素之间…

本地部署开源白板工具Excalidraw并结合内网穿透远程绘制流程图

文章目录 1. 安装Docker2. 使用Docker拉取Excalidraw镜像3. 创建并启动Excalidraw容器4. 本地连接测试5. 公网远程访问本地Excalidraw5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 本文主要介绍如何在Ubuntu系统使用Docker部署开源白板工具Excal…

渗透测试工具--awvs

安装 pull 这个镜像&#xff0c;注&#xff1a;内部映射端口 3443 软件页面 UserName: awvsawvs.lan PassWord: Awvsawvs.lan 或 使用以下命令无脑安装 bash <(curl -sLk https://www.fahai.org/aDisk/Awvs/check.sh) xrsec/awvs:preview 样式如下 若未成功&#xff0…

【网络原理】HTTPS 的工作过程

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序&#xff08;万字博文&#xff09; 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制&#xff08;CRC算法、MD5算法&#xff09; 【网络…

面试集中营—Redis架构篇

一、Redis到底是多线程还是单线程 1、redis6.0版本之前的单线程&#xff0c;是指网络请求I/O与数据的读写是由一个线程完成的&#xff1b; 2、redis6.0版本升级成了多线程&#xff0c;指的是在网络请求I/O阶段应用的多线程技术&#xff1b;而键值对的读写还是由单线程完成的。所…

Java面试题:多线程1

线程和进程的区别 进程 程序由指令和数据组成 指令的运行和数据的读写依赖于将指令加载到CPU,数据加载到内存,在指令运行过程中还需要用到IO设备 进程就是用以加载指令,管理内存,管理IO的 当一个程序被运行,从磁盘加载这个程序的代码到内存,就开启了一个线程 多实例进程和…

【prometheus】Pushgateway安装和使用

目录 一、Pushgateway概述 1.1 Pushgateway简介 1.2 Pushgateway优点 1.3 pushgateway缺点 二、测试环境 三、安装测试 3.1 pushgateway安装 3.2 prometheus添加pushgateway 3.3 推送指定的数据格式到pushgateway 1.添加单条数据 2.添加复杂数据 3.SDk-prometheus-…

[Django 0-1] Core.Serializers 模块

Core.Serializers 模块 Django 序列化模块 模块结构 . ├── __init__.py ├── base.py ├── json.py ├── jsonl.py ├── python.py ├── pyyaml.py └── xml_serializer.py1 directory, 7 files自定义序列化器 通过继承django.core.serializers.base.Serial…

C语言 举例说明循环嵌套

今天 我们来说循环的嵌套 如果一个循环体内 又包含了另一个循环结构 我们称之为循环的嵌套 我们之前学的 While do-while for 都可以进行相互的嵌套 如下图 在 While 循环语句中再嵌套一个 While 循环语句 do-while 中嵌套 do-while for中嵌套 for 例如 我们做一个九九乘法…