包裹快递

2023-10-27

包裹快递

背景

小K成功地破解了密文。但是乘车到X国的时候,发现钱包被偷了,于是无奈之下只好作快递员来攒足路费去Orz教主……
描述

一个快递公司要将n个包裹分别送到n个地方,并分配给邮递员小K一个事先设定好的路线,小K需要开车按照路线给的地点顺序相继送达,且不能遗漏一个地点。小K得到每个地方可以签收的时间段,并且也知道路线中一个地方到下一个地方的距离。若到达某一个地方的时间早于可以签收的时间段,则必须在这个地方停留至可以签收,但不能晚于签收的时间段,可以认为签收的过程是瞬间完成的。

为了节省燃料,小K希望在全部送达的情况下,车的最大速度越小越好,就找到了你给他设计一种方案,并求出车的最大速度最小是多少。
格式
输入格式

第1行为一个正整数n,表示需要运送包裹的地点数。

下面n行,第i+1行有3个正整数xi,yi,si,表示按路线顺序给出第i个地点签收包裹的时间段为[xi, yi],即最早为距出发时刻xi,最晚为距出发时刻yi,从前一个地点到达第i个地点距离为si,且保证路线中xi递增。

可以认为s1为出发的地方到第1个地点的距离,且出发时刻为0。
输出格式

仅包括一个整数,为车的最大速度最小值,结果保留两位小数。
样例1
样例输入1

3
1 2 2
6 6 2
7 8 4

Copy
样例输出1

2.00

Copy
限制

对于20%的数据,n≤10;
对于30%的数据,xi,yi,si≤1000。

对于50%的数据,n≤1000;
对于100%的数据,n≤200000;xi≤yi≤108x_i\le y_i\le 10^8xi​≤yi​≤108;si≤107s_i\le 10^7si​≤107。

时限1s
提示

第一段用1的速度在时间2到达第1个地点,第二段用0.5的速度在时间6到达第2个地点,第三段用2的速度在时间8到达第3个地点。

 

那么下面就上一个cpp的代码吧

//此题枚举的话会超时
//在这里我们采用二分的方法来得到这个最小的最大速度
//和疯牛问题比较相似,但那是个最大的最小值问题,不同就是这个judge函数更加简单
#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

const int N=2e5+10;
int n;
typedef long double ld;
struct time{
  double l,r,s;
}t[N];
bool judge(ld x)
{
    ld tot=0;//总时间
    for(int i=1;i<=n;i++)
    {
        tot+=t[i].s/x;//加上到这个点所需的时间
        if(tot>t[i].r) return false;//去晚了
        if(tot<t[i].l) tot=t[i].l;//去早了
    }
    return true;
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>t[i].l>>t[i].r>>t[i].s;
    }
    ld left=0;
    ld right=1e7,mid,ans;
    while(right-left>=0.000001)//精度要特别小心
    {
        mid=(left+right)/2;
        if(judge(mid)) {
            ans=mid;
            right=mid;//速度合适那就尝试更小的值,因为题目要求确定最大值最小是多少
        }
        else {
            left=mid;//速度不合适那就尝试更大的值。
        }
    }
    cout<<fixed<<setprecision(2)<<ans<<endl;//两位小数
    return 0;
}


当然它题目要求的一些数是比较大的,个别数据所以算的比较慢

#1 Accepted 2ms 208.0 KiB
#2 Accepted 1ms 232.0 KiB
#3 Accepted 3ms 216.0 KiB
#4 Accepted 4ms 228.0 KiB
#5 Accepted 4ms 324.0 KiB
#6 Accepted 95ms 2.801 MiB
#7 Accepted 150ms 2.684 MiB
#8 Accepted 182ms 3.293 MiB
#9 Accepted 189ms 3.473 MiB
#10 Accepted 192ms 3.5 MiB

哦哦对了,疯牛的问题在poj百炼上2456,有兴趣可以回顾一下,也是经典的二分

 

学会程序和算法,走遍天下都不怕

在这里插入图片描述南京中山陵

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

包裹快递 的相关文章

  • P1102 A-B 数对

    include
  • 二分

    林大oj981 vd的电话簿 table width 100 border 0 tbody tr style height 1 td h1 style color rgb 0 51 255 description h1 td tr tr s
  • 洛谷借教室

    之前写过 再过一遍其实不会 题目描述 在大学期间 经常需要租借教室 大到院系举办活动 小到学习小组自习讨论 都需要向学校申请借教室 教室的大小功能不同 借教室人的身份不同 借教室的手续也不一样 面对海量租借教室的信息 我们自然希望编程解决这
  • 包裹快递

    包裹快递 背景 小K成功地破解了密文 但是乘车到X国的时候 发现钱包被偷了 于是无奈之下只好作快递员来攒足路费去Orz教主 描述 一个快递公司要将n个包裹分别送到n个地方 并分配给邮递员小K一个事先设定好的路线 小K需要开车按照路线给的地点
  • 【LeetCode】二分法总结

    二分法总结 二分模板 找第一个大于等于target的 找第一个大于target的 33 搜索旋转排序数组 34 在排序数组中查找元素的第一个和最后一个位置 木头切割 二分模板 满足条件就写l mid 或 r mid 找第一个大于等于targ
  • A--玉米大炮--2022河南萌新联赛第(三)场:河南大学

    输入 3 3 1 1 2 2 3 3 输出 0 说明 开始时 小蓝控制所有大炮立即发射炮弹 僵王博士受到 666 点伤害 直接被击溃 示例2 输入 2 20 5 1 5 3 输出 2 说明 开始时 小蓝控制所有大炮立即发射炮弹 僵王博士受到
  • 二分的经典问题 最大化最小值和最小化最大值

    有点长 可以选自己想看的部分看 不过建议把刚开始的介绍看完 不多说 先来一个在升序无重复元素的数组中二分搜索的板子 l r 2 mid可能会爆int这种细节问题我们就放一边 int a MAX int Binary Search int v
  • Pie POJ - 3122【贪心、二分】

    该题连接 这是一道英文题 所以这里就不放原题了 我写一下它的题意 主人要开一个party 而主人有N个派 他要宴请F个人 也就是要有F 1个人要吃派 但这些人又很挑剔 他们每个人吃派只吃一种派 并且还不能容忍其他人吃的派比自己多 所以这就是
  • p1m2(二分)

    题目 2018百度之星 http acm hdu edu cn showproblem php pid 6383 二分 操作次数满足有序性 用二分 代码 include
  • 洛谷 P2249 【深基13.例1】查找

    题目链接 https www luogu com cn problem P2249 include
  • NYOJ 586 疯牛 & POJ 2456(二分搜索 + 贪心)

    疯牛 时间限制 1000 ms 内存限制 65535 KB 难度 4 描述 农夫 John 建造了一座很长的畜栏 它包括N 2 lt N lt 100 000 个隔间 这些小隔间依次编号为x1 xN 0 lt xi lt 1 000 000
  • (今日头条面试题)剪绳子(二分带详细思路)

    有N根绳子 第i根绳子长度为Li 现在需要M根等长的绳子 你可以对N根绳子进行任意裁剪 不能拼接 请你帮忙计算出这M根绳子最长的长度是多少 输入格式 第一行包含2个正整数N M 表示原始绳子的数量和需求绳子的数量 第二行包含N个整数 其中第
  • 剑指 Offer 53 - I. 在排序数组中查找数字 I

    题目链接 53 I 在排序数组中查找数字 I 思路分析 利用二分查找即可 class Solution public int search vector
  • 学算法,先从二分查找开始吧

    总纲 思路很简单 细节是魔鬼 分为三个常用场景 寻找一个数 寻找左侧边界 寻找右侧边界 最后给出力扣上的题目例子 还可以在GitHub上观看哦 AlgorithmNotes 基础框架 int binarySearch int nums in
  • Can you solve this equation?(二分)

    Problem Description Now given the equation 8 x 4 7 x 3 2 x 2 3 x 6 Y can you find its solution between 0 and 100 Now ple
  • 【模板】二分

    文章目录 1 整数二分 1 1 寻找 x 或 x 的后继 1 2 寻找 x 或 x 的前驱 1 3 模板 1 4 解题步骤 2 实数二分 本文的二分模板来自 算法竞赛进阶指南 1 整数二分 对于整数域上的二分 需要注意终止边界 左右区间取舍
  • 洛谷P1182-数列分段(详解)

    题目 给定一个长度为n的数列A 要求将它分为m段 要求每段连续 且每段和的最大值最小 N lt 10e5 m lt n Ai之和不超过10e9 这题一看就知道我不会 所以很老实的去看了看题解 题解也真是避重就轻 重要的地方就说 这个要自己思
  • 信息学奥赛一本通 1240:查找最接近的元素

    题目链接 http ybt ssoier cn 8088 problem show php pid 1240 include
  • 贪心+二分解决最大值最小、最小值最大问题

    在刷题时 总会遇到求最大值最小 最小值最大问题 也许它会暗喻是这样的一个问题 对于这样的一个问题 你会发现用dp和枚举都会超时超内存 或者说很麻烦 所以这是一个比较简单的解题方式 二分逼近思想 对于难以直接确定解的问题 采取二分枚举 检验的
  • Min Difference 二分优化

    题目链接 暴力的时间复杂度是O n 2 n 2 n2 只能在查询的时候优化一下 可以手写一个左闭右开的二分 也可以使用库函数 l

随机推荐

  • vscode里面模块缺失的几种可能以及解决方法(部分可能)

    最近在做Python的脚本编写 老是在运行文件时提示缺少模块 通过几天的了解 总结出以下的方法来解决 1 模块没有安装 对于这中的解决方法很简单 哪里少了安哪里 在cmd或者bash里边直接使用下边的命令就可以直接安装 注意 如果你的机器上
  • 在一个有序数组中,查找具体的某个数(二分查找)

    问题 给定已排序好的n个元素arr 0 n 1 现在要在这n 个元素中找出一特定元素x 基本思想 将n个元素分成个数大致相同的两半 取arr n 2 与x进行比较 如果x arr n 2 则找到x 算法终止 如果x
  • CMake 简介

    cmake是kitware公司以及一些开源开发者在开发几个工具套件 VTK 的过程中所产生的衍生品 后来经过发展 最终形成体系 在2001年成为一个独立的开放源代码项目 其官方网站是www cmake org 可以通过访问官方网站来获得更多
  • (杭电多校)2023“钉耙编程”中国大学生算法设计超级联赛(8)

    1005 0 vs 1 双端队列暴力模拟 时间复杂度为O n T 首先预处理0的右边第一个0的下标 1的右边第一个1的下标 0的左边第一个0的下标 1的左边第一个1的下标 然后进行模拟 如果当前是zero的轮次 那么就看双端队列的两端 如果
  • 数据结构与算法基础知识(1)

    文章概述 数据结构的定义与分类 逻辑结构 物理结构 数据结构的定义 数据结构就是关系 是数据元素之间存在的一种或者多种特定关系的集合 数据结构分为两类 a 逻辑结构 b 物理结构 逻辑结构 数据对象中数据元素之间的相互关系 物理结构 数据的
  • 前端防止按钮被多次重复点击

    多次重复点击会造成前端显示出bug 需要判断去过滤掉重复多次的点击 这个有好多种方法 逻辑是不管点几次 间隔一定时间才会去触发一次 只产生一次的记录 也就是弄个定时器 最直接的方法就是等每次点击过后等所有操作结束后释放变量 但是这个太麻烦了
  • 音频应用处理器性能benchmark

    我的书 购买链接 京东购买链接 淘宝购买链接 当当购买链接 处理器类别 1 Analog Devices SHARC Blackfin SigmaDSP 2 TI c55 c67x c66x 3 ARM cortex M4 M7 corte
  • python 时间和日期[time 和 calender模块]

    Python 程序能用很多方式处理日期和时间 转换日期格式是一个常见的功能 Python 提供了一个 time 模块可以用于格式化日期和时间 时间间隔是以秒为单位 每个时间戳都以自从1970年1月1日0 0 0 开始计时的 Python 的
  • Android 实现点击输入框以外的区域隐藏软键盘

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 效果图如下 代码实现如下 首先创建一个工具类InputMethodUtil public class InputMethodUtil 隐
  • 【ML】机器学习模型的 10 个评估指标

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • Ant Design Pro学习记录—ModalForm的使用(二)

    目录 一 ModalForm高度设置 二 ModalForm点击阴影背景 不隐藏弹框 三 ProFormSelect联动 四 ProFormText关联赋值 一 ModalForm高度设置 在modalProps中设置bodyStyle h
  • 华为OD机试 Python 【平均值最大子数组】

    题目 任务 你需要从一个有N个正数的列表里面找一个子列表 这个子列表的长度应该至少为L 而且它里面的数字要使几何平均值尽量大 我们需要你告诉我们这个子列表是从哪个位置开始的 以及它的长度 怎么判断哪个子列表最好 首先看几何平均值谁大 谁就好
  • springboot war打包步骤

    packaging的设置
  • centos7-elk之安装kibana

    下载解压安装包 安装elasticsearch6 0 1之后 下载kibana6 0 1 tar包 存放地址 opt elk 解压tar包 tar zxvf kibana6 0 1 修改配置文件 vim opt elk kibana6 0
  • BDD、KITTI、Cityscapes和Foggy Cityscapes百度云链接

    BDD 链接 https pan baidu com s 1gtUZGV 8X4L3Fe3PtCAxjw 提取码 vfoj KITTI 链接 https pan baidu com s 1EPEV z185GV8t RE48lROA 提取码
  • 为老人和残障人士“铺路搭桥”,这家银行是认真的

    一场疫情改写了银行业的规则 街道被封闭 城市空无一人 那个肃杀的冬季已经离我们远去 但对刚成立不久的小型银行来说 这是一场近乎致命的打击 裕民银行正是其中一员 这是江西省第一家 全国第18家民营银行 根据监管要求 民营银行只能采取 一行一店
  • kd树

    参考 1 统计学习方法 李航 2 https baike baidu com item kd tree 2302515 fr aladdin 3 http www jianshu com p ffe52db3e12b 4 http blog
  • error: device unauthorized.This adb server's $ADB_VENDOR_KEYS is not set

    以为是个复杂问题 百度之后将自己的手机屏幕解锁打开之后就成功连接上了 同样出问题的小伙伴可以看看是不是接口的问题 或者开发者模式没有打开
  • python中global用法实例分析

    lobal语句是适用于当前整个代码块的声明 它是全局变量的标识符 如果某名字在局部名字空间中没有定义 就自动使用相应的全局名字 没有global是不可能手动指定一个名字是全局的 在 global 中出现的名字不能在global 之前的代码中
  • 包裹快递

    包裹快递 背景 小K成功地破解了密文 但是乘车到X国的时候 发现钱包被偷了 于是无奈之下只好作快递员来攒足路费去Orz教主 描述 一个快递公司要将n个包裹分别送到n个地方 并分配给邮递员小K一个事先设定好的路线 小K需要开车按照路线给的地点