最佳植树距离

2023-10-27 23:04
文章标签 最佳 距离 植树

本文主要是介绍最佳植树距离,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

给定n个坐标点位置,这些位置可以植树,有m棵树,求把m棵树都种下并且相邻树尽可能距离远时,相邻的树的距离的最小值。

输入

第一行n代表有n个坐标
第二行有n个数,用空格隔开,代表n个坐标
第三行m代表m棵树

输出

一个数,代表相邻的树的距离的最小值

思路

  1. 相邻树的距离的取值范围是【1,pos[n-1]】
  2. 题目的解就在这个范围里面,朴素的办法,从pos[n-1]一直往1的方向尝试,当有符合条件的就停止,当下的值就是解。更快的方法是用二分法来确定这个值。朴素的办法可能会超时,没试过。
  3. 如果用朴素的办法,check 函数是要求出当相邻两棵树的距离是大于等于dist时能否种得下大于等于m棵树。二分法的的check 函数也是这样设计。dist 是当下枚举到的相邻两棵树的距离。check 前先对pos 按从小到大排序会更好处理。

代码

二分法版本

import sys n,m = None, None
pos = None # lst
cnt = 0
ans = None
for line in sys.stdin:a = line.split()if cnt == 0:n = int(a[0])elif cnt == 1:pos = aelif cnt == 2:m = int(a[0])breakcnt += 1
pos = [int(e) for e in pos]
pos = sorted(pos)
# left, right = pos[0], pos[n-1] # 这不对
left, right = 1, pos[n-1]-pos[0] # left right 决定解的范围,解的范围是[1, pos[n-1]-pos[0]]
mid = (left+right) >> 1
dis = mid 
cur_idx = pos[0]
def check(dis, pos, n, m):cnt = 1cur_idx = pos[0]for i in range(1, n):if pos[i]- cur_idx >= dis:cnt += 1cur_idx = pos[i]if cnt >= m:return True else:return Falsewhile left <= right:if check(dis, pos, n, m):# dis 是可能的解ans = dis# dis 太小left = mid + 1else:# dis 不是可能的解# dis 太大right = mid -1mid = (left+right) >> 1dis = mid print(ans)

同类型题目

LeetCode 1552 两球之间的磁力

这篇关于最佳植树距离的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/289024

相关文章

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

java中Optional的核心用法和最佳实践

《java中Optional的核心用法和最佳实践》Java8中Optional用于处理可能为null的值,减少空指针异常,:本文主要介绍java中Optional核心用法和最佳实践的相关资料,文中... 目录前言1. 创建 Optional 对象1.1 常规创建方式2. 访问 Optional 中的值2.1

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践举例

《Vue2项目中配置TailwindCSS和FontAwesome的最佳实践举例》:本文主要介绍Vue2项目中配置TailwindCSS和FontAwesome的最... 目录vue 2 项目中配置 Tailwind css 和 Font Awesome 的最佳实践一、Tailwind CSS 配置1. 安

Java计算经纬度距离的示例代码

《Java计算经纬度距离的示例代码》在Java中计算两个经纬度之间的距离,可以使用多种方法(代码示例均返回米为单位),文中整理了常用的5种方法,感兴趣的小伙伴可以了解一下... 目录1. Haversine公式(中等精度,推荐通用场景)2. 球面余弦定理(简单但精度较低)3. Vincenty公式(高精度,

Spring Boot 常用注解详解与使用最佳实践建议

《SpringBoot常用注解详解与使用最佳实践建议》:本文主要介绍SpringBoot常用注解详解与使用最佳实践建议,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、核心启动注解1. @SpringBootApplication2. @EnableAutoConfi

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B