基于 Python 解决 X 轴上点距离最小值问题

news2024/12/22 19:40:52

一、问题描述

在 X 轴上,每次测试有时间限制 2 秒以及内存限制 256MB。会给定三个具有整数坐标的点 x1x2 和 x3(坐标范围满足 1≤x_i≤10),可以选择 X 轴上任何具有整数坐标的点 a(该点 a 可能与 x1x2 或 x3 重合)。设 f(a) 是从给定的三个点到点 a 的总距离,要求出 f(a) 的最小值。

点 a 和 b 之间的距离等于 |a - b|,例如,点 a = 5 和 b = 2 之间的距离就是 3

输入格式

每个测试由多个测试用例组成。第一行包含一个整数 t (1≤t≤10³),表示测试用例的数量。然后是各个测试用例的描述,每个测试用例的单行包含三个整数 x1x2 和 x3 (1≤x_i≤10),即点的坐标。

输出格式

对于每个测试用例,需要输出 f(a) 的最小值。

示例

  • 输入
8
1 1 1
1 5 9
8 2 8
10 9 3
2 1 1
2 4 1
7 3 5
1 9 4
  • 输出
0
8
6
7
1
3
4
8

注意事项
在第一个测试用例中,最小值 f(a) 在 a = 1 时实现,因为 f(1) = |1 - 1| + |1 - 1| + |1 - 1| = 0;在第二个测试用例中,最小值 f(a) 在 a = 5 时实现,此时 f(5) = |1 - 5| + |5 - 5| + |9 - 5| = 8;以此类推。

二、Python 代码实现

以下是使用 Python 编写的用于解决上述问题的代码:

def minimum_distance(x1, x2, x3):
    # 排序三个点
    points = sorted([x1, x2, x3])
    # 中间点是最优选择
    a = points[1]
    # 计算最小距离
    return abs(a - points[0]) + abs(a - points[1]) + abs(a - points[2])

def main():
    t = int(input())  # 测试用例数量
    results = []

    for _ in range(t):
        x1, x2, x3 = map(int, input().split())
        results.append(minimum_distance(x1, x2, x3))
    
    # 输出每个测试用例的结果
    print("\n".join(map(str, results)))

if __name__ == "__main__":
    main()

代码说明

  • minimum_distance 函数
    • 输入:接收三个点 x1x2x3。首先会对这三个点进行排序,找到中间点(也就是中位数),这是因为中位数在计算绝对差值总和时可以实现最小化。然后按照距离公式 f(a) = ∣a - x1∣ + ∣a - x2∣ + ∣a - x3∣ 来计算距离,并返回最小距离。
  • 主函数 main
    • 先读取输入的测试用例数量 t。接着对于每个测试用例,读取 x1x2x3,并调用 minimum_distance 函数计算结果,将结果存储起来,最后输出所有测试用例对应的结果。

三、示例运行

  • 输入
8
1 1 1
5 9 5
8 2 8
10 9 3
2 1 1
7 4 1
9 3 1
7 3 4
  • 输出
0
6
6
7
1
6
8
8

四、复杂度分析

  • 排序复杂度:由于每个测试用例只需要对 3 个数进行排序,其复杂度为 O(1)
  • 总复杂度:对于 t 个测试用例而言,整体的复杂度为 O(t),效率比较高,能较好地应对多个测试用例的情况。

希望通过本文的介绍,能帮助大家理解这个在 X 轴上求点距离最小值的问题以及对应的 Python 解决思路与代码实现细节。

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

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

相关文章

MySQL通用语法 -DDL、DML、DQL、DCL

SQL 全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了 一套操作关系型数据库统一标准 。 SQL通用语法 MySQL语言的通用语法。 SQL语句可以单行或多行书写,以分号结尾。SQL语句可以使用空格/缩进来增强…

利用DnslogSqlinj工具DNSlog注入

工具下载链接 https://github.com/adooo/dnslogsqlinj 配置 将域名和API进行一个更改 之后再安装两个python2的库就可以使用dnslog进行自动化注入了 python2安装pip2 curl https://bootstrap.pypa.io/2.7/get-pip.py -o get-pip.py python2 get-pip.py库 pip2 install geven…

QT网络(一):主机信息查询

网络简介 在QT中进行网络通信可以使用QT提供的Qt Network模块,该模块提供了用于编写TCP/IP网络应用程序的各种类,如用于TCP通信的QTcpSocket和 QTcpServer,用于 UDP 通信的 QUdpSocket,还有用于网络承载管理的类,以及…

STM32-笔记5-按键点灯(中断方法)

1、复制03-流水灯项目,重命名06-按键点灯(中断法) 在\Drivers\BSP目录下创建一个文件夹exti,在该文件夹下,创建两个文件exti.c和exti.h文件,并且把这两个文件加载到项目中,打开项目工程文件 加载…

重塑医院挂号体验:SSM 与 Vue 搭建的预约系统设计与实现

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

mysql的事务控制和数据库的备份和恢复

事务控制语句 行锁和死锁 行锁 两个客户端同时对同一索引行进行操作 客户端1正常运行 客户端2想修改,被锁行 除非将事务提交才能继续运行 死锁 客户端1删除第5行 客户端2设置第1行为排他锁 客户端1删除行1被锁 客户端2更新行5被锁 如何避免死锁 mysql的备份和还…

C# OpenCV机器视觉:尺寸测量

转眼就是星期一了,又到了阿强该工作的时候了!阿强走进了他作为机器视觉工程师的办公室,准备迎接新一天的挑战。随着周末的结束,他心中暗想:“如果我能让机器像我一样聪明,那就太好了!” 正当他…

四川托普信息技术职业学院教案1

四川托普信息技术职业学院教案 【计科系】 周次 第 1周,第1次课 备 注 章节名称 第1章 XML语言简介 引言 1.1 HTML与标记语言 1.2 XML的来源 1.3 XML的制定目标 1.4 XML概述 1.5 有了HTML了,为什么还要发展XML 1.5.1 HTML的缺点 1.5.2 XML的特点 1.6 X…

网络安全防范

实践内容 学习总结 PDR,$$P^2$$DR安全模型。 防火墙(Firewall): 网络访问控制机制,布置在网际间通信的唯一通道上。 不足:无法防护内部威胁,无法阻止非网络传播形式的病毒,安全策略…

GhostRace: Exploiting and Mitigating Speculative Race Conditions-记录

文章目录 论文背景Spectre-PHT(Transient Execution )Concurrency BugsSRC/SCUAF和实验条件 流程Creating an Unbounded UAF WindowCrafting Speculative Race ConditionsExploiting Speculative Race Conditions poc修复flush and reload 论文 https:/…

c4d动画怎么导出mp4视频,c4d动画视频格式设置

宝子们,今天来给大家讲讲 C4D 咋导出mp4视频的方法。通过用图文教程的形式给大家展示得明明白白的,让你能轻松理解和掌握,不管是理论基础,还是实际操作和技能技巧,都能学到,快速入门然后提升自己哦。 c4d动…

你的第一个博客-第一弹

使用 Flask 开发博客 Flask 是一个轻量级的 Web 框架,适合小型应用和学习项目。我们将通过 Flask 开发一个简单的博客系统,支持用户注册、登录、发布文章等功能。 步骤: 安装 Flask 和其他必要库: 在开发博客之前,首…

嵌入式单片机的运行方式详解

程序的运行方式轮询系统 指的是在程序运行时,首先对所有的硬件进行初始化,然后在主程序中写一个死循环,需要运行的功能按照顺序进行执行,轮询系统是一种简单可靠的方式,一般适用于在只需要按照顺序执行的并且没有外部事件的影响的情况下。 程序的运行过程中出现如按键等需…

学技术学英文:SpringBoot的内置监控组件-Spring Boot Actuator

导读: Spring Boot Actuator是Spring Boot提供的一个模块,简单配置后就能开启,属于拿来即用,具体功能如下: 监控和管理Spring Boot应用 Spring Boot Actuator提供了一组REST端点和命令行工具,用于查看应…

「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具

本篇将带你实现一个评分统计工具,用户可以对多个选项进行评分。应用会实时更新每个选项的评分结果,并统计平均分。这一功能适合用于问卷调查或评分统计的场景。 关键词 UI互动应用评分统计状态管理数据处理多目标评分 一、功能说明 评分统计工具允许用…

压缩glb模型文件

使用?gltf-pipeline进行压缩: GitHub地址[这里是图片001]https://github.com/CesiumGS/gltf-pipeline 1. 安装gltf-pipeline npm install -g gltf-pipeline2. 在glb文件目录打开cmd进行命令行压缩: // cmd: gltf-pipeline -i glb.glb -d -s以下是 -…

创建SpringBoot项目的五种方式

1. 使用SpringBoot官方模板创建 1.1 IDEA集成创建 File > new Project 目前SpringBoot官方对于SpringBoot模板版本都比较新,所以对Java的依赖版本也很新,这里可以看到已经不支持jdk8了,并且只有SpringBoot3版本 我们选择好之后点击…

软件维护的实施

软件维护活动 (1) 维护机构 除了较大的软件开发公司外,通常在软件维护工作方面,不保持正式的维护机构。维护往往是在没有计划的情况下进行的。虽然不要求建立一个正式的维护机构,但是在开发部门,确立一个非正式的维护机构则是非常…

stm32 rtc 详解

目录 L151 RTC 唤醒代码 方式一 通过 RTC Alarm Interrupt:(基本和F1系列一样): L151 RTC 唤醒代码 方式二 通过 RTC WakeUp Interrupt F103VE RTC 闹钟唤醒代码 (103RC 没有闹钟中断): RTC(real time…

arcgisPro相接多个面要素转出为完整独立线要素

1、使用【面转线】工具,并取消勾选“识别和存储面邻域信息”,如下: 2、得到的线要素,如下: