2022-09-23:整数数组 stations 表示 水平数轴 上各个加油站的位置。给你一个整数 k 。 请你在数轴上增设 k 个加油站, 新增加油站可以位于 水平数轴 上的任意位置,而不必放在整数
2022-09-23:整数数组 stations 表示 水平数轴 上各个加油站的位置。给你一个整数 k 。
 请你在数轴上增设 k 个加油站,
 新增加油站可以位于 水平数轴 上的任意位置,而不必放在整数位置上。
 设 penalty() 是:增设 k 个新加油站后,相邻 两个加油站间的最大距离。
 请你返回 penalty() 可能的最小值。与实际答案误差在 10-6 范围内的答案将被视作正确答案。
答案2022-09-23:
二分答案法。
代码用rust编写。代码如下:
fn main() {
    let mut stations = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    let kk = 9;
    let ans = minmax_gasdist(&mut stations, kk);
    println!("ans = {}", ans)
}
fn minmax_gasdist(stations: &mut Vec<i32>, kk: i32) -> f64 {
    // 精度
    let accuracy: f64 = 0.0000001;
    let mut l: f64 = 0.0;
    let mut r: f64 = 100000000.0;
    let mut m: f64;
    let mut ans: f64 = 0.0;
    while r - l > accuracy {
        m = (l + r) / 2.0;
        if ok(m, stations, kk) {
            r = m;
            ans = m;
        } else {
            l = m;
        }
    }
    return ans;
}
// int[] stations : 所有加油站的分布情况!
// double limit : 强制要求,相邻加油站的距离,不能超过limit
// int K : 一共可以使用的加油站数量!
// 所有加油站的分布情况, 相邻加油站的距离, 共可以使用的加油站数量, 能不能做到!
fn ok(limit: f64, stations: &mut Vec<i32>, kk: i32) -> bool {
    let mut used = 0;
    for i in 1..stations.len() as i32 {
        used += ((stations[i as usize] as f64 - stations[(i - 1) as usize] as f64) / limit) as i32;
        if used > kk {
            return false;
        }
    }
    return true;
}
执行结果如下:

2022-09-23:整数数组 stations 表示 水平数轴 上各个加油站的位置。给你一个整数 k 。 请你在数轴上增设 k 个加油站, 新增加油站可以位于 水平数轴 上的任意位置,而不必放在整数的更多相关文章
- Delphi XE7实现的任意位置弹出菜单
		Delphi XE7中目前还没有弹出菜单组件,这个弹出菜单应用很普遍,在JAVA开发的安卓程序中很简单就可以用上了,应该说是一个标准控件.看了一些例子,但是都不能满足我想在任意位置弹出菜单需求,于是自 ... 
- 点击任意位置关闭(CocosCreator)
		推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 我的个人博客 今天,接触到一个新功能,当弹出某个弹框时,需要点击除弹框的剩余任意位置,来关闭该弹框,例如:当红框内 ... 
- 072 01 Android 零基础入门  01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法
		072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法 本文知识点:综合案例-数组移位-在指定位置处插入数据方法 ... 
- 整数数组的定义,然后输入一个整数X,假定X不在这个数组,返回小于X位置的最大数目i而超过X位置的最小数目j
		//整数数组的定义,然后输入一个整数x,假定X不在这个数组,返回小于X位置的最大数目i而超过X位置的最小数目j: //如果X在该阵列,返回位置的阵列中的数. 资源: #include<iostr ... 
- 如何在html中把一个图片或者表格覆盖在一张已有图片上的任意位置
		如何在html中把一个图片或者表格覆盖在一张已有图片上的任意位置 <div style="position:relative;"> <img src=&quo ... 
- 【转】如何把变量或者数组定义到SDRAM及任意位置
		我们开发软件的时候,经常会遇到到一个问题,就是内存不够,这个时候就纠结了,怎么办,有两种方法,第一种是扩展内存,外加SRAM或者SDRAM:第二种应该就是优化代码,也就是通常所说的把数组大小减一减,代 ... 
- 剑指offer23:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。输出Yes OR No。
		1 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 2 思路和方法 二叉搜索树:二叉查找树(Bin ... 
- C语言中链表任意位置怎么插入数据?然后写入文件中?
		链表插入示意图:(图是个人所画)因为链表指针指来指去,难以理解,所以辅助画图更加方便. 插入某个学号后面图: 定义的结构体: struct student { ]; //学生学号 ]; //学生姓名 ... 
- java—数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = input数组中,除了input[i] 之外的所有数的乘积,不用考虑溢出例如 input {2, 3, 4, 5} output: {60, 40, 30, 24}
		/** * 小米关于小米笔试题 数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = * input数组中,除了input[i] 之外的 ... 
- iOS修改手机定位(非越狱任意位置)
		利用开发者的一些调试功能,我们可以修改非越狱的苹果手机定位,模拟任意位置. 经测试,此方法仅限开发者调试使用,并不能长时间修改手机定位. 1. 首先需要了解一些坐标系的知识 iOS,原生坐标系为 WG ... 
随机推荐
- 平滑arctan的值,将值映射为0~2π
			欢迎访问我的个人博客:xie-kang.com 原文地址 在某些场景计算夹角时,会期望带上象限信息. 此时atan函数将不再满足我们的使用要求,因为atan返回值为 -π/2 ~ π/2,它没有携带有 ... 
- django+ajax实现xlsx文件下载功能
			前端代码 $("#id_pullout").click(function () { //发送ajax请求 $.ajax({ url: '/pullout/', //请求的url m ... 
- 关于Appium执行用例过程中问题处理办法
			关于Appium执行用例过程中问题处理办法 1. 运行环境 1.1 windows10 64位系统 1.2 华为荣耀V10 Android 9 1.3 appium-desktop 1 ... 
- Python学习笔记--布尔类型和比较运算符、if判断语句以及相关案例的实现
			布尔类型和比较运算符 代码: 结果: 主要有以下几类: 注意:bool类型的真假表示开头必须大写,例如:True和False 而要是想要得到布尔类型,除了直接定义,还可以通过比较运算得到布尔类型: i ... 
- 如何在 Apinto 实现 HTTP 与gRPC 的协议转换 (下)
			上文给大家详细介绍了在 Apinto 上实现 HTTP 与 gRPC 的协议转换的基本内容,本篇我们将继续讲解如何在 Apinto-Dashboard 中进行配置. 配置 Apinto Apinto ... 
- ZGC 最新一代垃圾回收器[NO]
			ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,ZGC可以说源自于 Azul System 公司开发的C4收集器[基本不用调优]它的设计目标包括: ... 
- Windows10彻底关闭自动更新
			此文操作流程只针对于Windows10 1803及以下版本,更新版本未测试. Windows10在本地组策略编辑器禁用了自动更新,系统依然会在某个时候触发自动更新,怎么办呢,方法来了. 这个方法是结合 ... 
- Ansible 安装并简单使用
			Ansible 简介 Ansible 是一款 IT 自动化工具.主要应用场景有配置系统.软件部署.持续发布及不停服平滑滚动更新的高级任务编排. Ansible 本身非常简单易用,同时注重安全和可靠性, ... 
- Java并发(二)----初次使用多线程并行提高效率
			1.并行 并行代表充分利用多核 cpu 的优势,提高运行效率. 想象下面的场景,执行 3 个计算,最后将计算结果汇总. 计算 1 花费 10 ms  计算 2 花费 11 ms  计算 3 花费 ... 
- TS(二)内置对象与class类
			内置对象 ECMA内置对象 Boolean.Number.String.RegExp.Date.Error const regexp:RegExp = /\w\d\s const number:Num ... 
