三元组的最小距离

news/2024/10/21 3:36:04/

定义三元组 (a,b,c)

(a,b,c 均为整数)的距离 D=|a−b|+|b−c|+|c−a|

给定 3

个非空整数集合 S1,S2,S3,按升序分别存储在 3

个数组中。

请设计一个尽可能高效的算法,计算并输出所有可能的三元组 (a,b,c)

(a∈S1,b∈S2,c∈S3

)中的最小距离。

例如 S1={−1,0,9},S2={−25,−10,10,11},S3={2,9,17,30,41}

则最小距离为 2,相应的三元组为 (9,10,9)

输入格式

第一行包含三个整数 l,m,n

,分别表示 S1,S2,S3

的长度。

第二行包含 l

个整数,表示 S1

中的所有元素。

第三行包含 m

个整数,表示 S2

中的所有元素。

第四行包含 n

个整数,表示 S3

中的所有元素。

以上三个数组中的元素都是按升序顺序给出的。

输出格式

输出三元组的最小距离。

数据范围

1≤l,m,n≤105

,
所有数组元素的取值范围 [−109,109]

输入样例:

3 4 5
-1 0 9
-25 -10 10 11
2 9 17 30 41

输出样例:

2

 思路:

用归并,三指针的思想O(n)得到三元组,在这个三元组中(max-min)*2即三元组的距离

 代码:

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;
const int N=100010;int l,m,n;
int a[N],b[N],c[N];
typedef long long LL;int main()
{scanf("%d%d%d", &l,&m, &n);for(int i=0;i<l;i++) scanf("%d",&a[i]);for(int i=0;i<m;i++) scanf("%d",&b[i]);for(int i=0;i<n;i++) scanf("%d",&c[i]);LL res=1e18;for(int i=0,j=0,k=0;i<l&&j<m&&k<n;){int x=a[i],y=b[j],z=c[k];res=min(res,(LL)max(max(x,y),z)-min(min(x,y),z));   //求出三元组组中最大的数与最小数之间的距离res//归并的思想,用三指针if(x<=y&&x<=z) i++;else if(y<=z&&y<=x) j++;else k++;     //z最小的话,往前移动}printf("%lld\n",res*2);return 0;
}


http://www.ppmy.cn/news/1026019.html

相关文章

【LangChain】Memory

概要 大多数LLM应用都有对话界面。对话的一个重要组成部分是能够引用对话中先前介绍的信息。至少&#xff0c;对话系统应该能够直接访问过去消息的某些窗口。更复杂的系统需要有一个不断更新的世界模型&#xff0c;这使得它能够执行诸如维护有关实体及其关系的信息之类的事情。…

基于CentOS 7 部署社区版Haproxy

HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件&#xff0c;是一款具 备高并发(一万以上)、高性能的TCP和HTTP负载均衡器&#xff0c;支持基于cookie的持久性&#xff0c;自动故障切换&#xff0c;支 持正则表达式及web状态统计。 目录 1…

Tik Tok娱乐+电商MCN怎么做?

在美国外的热门市场中&#xff0c;TikTok 主要做的区域市场包括中东、拉美、欧洲和东亚&#xff0c;而这里面适合做电商的其实并不多。 欧洲、东亚都属于成熟市场&#xff0c;且 TikTok 本身在欧洲面临 DSA 法案更严格的审查&#xff0c;与在英国相同&#xff0c;欧洲各市场消…

系列二、Redis简介

一、概述 # 官网 https://redis.io/ 总结&#xff1a;redis是一个内存型的数据库。 二、特点 Redis是一个高性能key/value内存型数据库。Redis支持丰富的数据类型。Redis支持持久化 。Redis单线程,单进程。

探索极限:利用整数或字符串操作找出翻转后的最大数字

本篇博客会讲解力扣“1323. 6 和 9 组成的最大数字”的解题思路&#xff0c;这是题目链接。 对于这道题目&#xff0c;我会讲解2种解题思路&#xff0c;分别是直接操作整数&#xff0c;和利用字符串操作。希望大家通过本题学习关于整数和字符串的技巧。 显然&#xff0c;这道题…

IntelliJ IDEA快捷键大全

文章目录 1、构建/编译2、文本编辑3、光标操作4、文本选择5、代码折叠6、辅助编码7、上下文导航8、查找操作9、符号导航10、代码分析11、运行和调试12、代码重构13、全局 CVS 操作14、差异查看器15、工具窗口 本文参考了 IntelliJ IDEA 的官网&#xff0c;列举了IntelliJ IDEA&…

面试题:ArrayList扩容时扩容多少?

大家好&#xff0c;我是你们的小米&#xff01;今天要和大家一起来探讨一个在Java面试中经常被问到的问题&#xff1a;“ArrayList扩容时扩容多少&#xff1f;”相信很多小伙伴都在面试中遇到过这个问题&#xff0c;那么接下来&#xff0c;我就为大家详细解析一下这个问题&…

棒球和垒球的区别·棒球联盟

棒球和垒球的区别 1. 定义和起源 棒球起源于19世纪中叶的美国&#xff0c;最初被认为是一种游戏&#xff0c;而并非体育运动。那时&#xff0c;棒球常常被孩子们用来进行休闲娱乐。在20世纪初&#xff0c;它才开始被纳入体育运动的范畴。 垒球则是棒球的近亲&#xff0c;同样…