【青训入营】青海湖租车之旅

news2024/10/6 12:31:03
# 问题描述

油价飞升的今天,我们尽量减少花费。我们出门旅游,有时候租车去旅游也是一种不错的方式。这次我们这次旅游是从「青海湖」到「景点 X」,景点 X 可以是「敦煌」、「月牙泉」等,线路的路径是唯一的,假设我们每走 1 km 消耗 1 L 的油,车油箱容量 400L。比如:如果「景点 X」是敦煌,我们在青海湖租车前油箱是 200L 的,在「景点 X」(敦煌)还车的时候也是 200L 的,路上有很多加油站,加油站在青海湖和「景点 X」的连线上。

## 输入格式

第 1 行表示「青海湖」到「景点 X」的距离,距离最远不超过 10000 km。
第 2 行表示接下来 N 行表示 N 个加油站(N 为正整数)。
接下来 N(1 <= N <= 100)行表示,每一个加油站情况。每一个加油站包括距离「景点 X」的距离 a km(0 <= a <= 10000),以及每升汽油的价格 b 元(0 <= b <= 2000),a 和 b 均为正整数。

## 输出格式

如果不能到达目的地「景点 X」,输出 Impossible。
如果能到达目的地「景点 X」,输出最小花费多少元。

**输入样例**:
500
4
100 1
200 30
400 40
300 20

**输出样例**:
4300

def solution(distance, n, gas_stations):
    # Please write your code here
    #线性动态规划
    #n的值在下面的代码中可以发生改变,代表有效的加油站数量

    #将终点距离加到加油站列表中,方便后续处理(相当于把终点当成最后一个加油站了)
    gas_stations.append((distance,0))
    #按照距离加油站的距离长短排序
    gas_stations.sort(key=lambda x:x[0])

    #距离数组,表示每个加油站和前一个加油站的距离
    dis=[0]*(n+1)
    dis[0]=gas_stations[0][0]
    for i in range(1,n+1):
        dis[i]=gas_stations[i][0]-gas_stations[i-1][0]
    

    #dp[i][j]表示到达第i个加油站油量剩余j时的最小花费
    dp=[[float('inf')]*410 for _ in range(110)]
    #起点设置为0
    dp[0][200]=0
     
    #动态规划过程
    for i in range(1,n+1):
        #意味着找到最后一个有效的加油站
        if gas_stations[i-1][0]==distance:
             n=i-1
             break
        #j表示到达第 i 个加油站时油量剩余为 j 的情况,k表示到达第 i - 1 个加油站时油量剩余为 k 的情况
        for j in range(401):
            for k in range(401):
                #如果从当前加油站的前一个加油站出发,到达当前加油站时油量足够,并且当前加油站有油价信息
                if j+dis[i-1]-k>=0 and len(gas_stations[i-1])>1:
                    #更新dp[i][j]为到达当前加油站剩余j的最小花费
                    cost = (j + dis[i - 1] - k) * gas_stations[i - 1][1]
                    dp[i][j]=min(dp[i][j],dp[i-1][k]+cost)
    
    if n<1 or 200+dis[n-1]<0 or dp[n][200+dis[n-1]]==float('inf'):
        return "Impossible"
    return dp[n][200+dis[n-1]]


if __name__ == "__main__":
    #  You can add more test cases here
    gas_stations1 = [(100, 1), (200, 30), (400, 40), (300, 20)]
    gas_stations2 = [(100, 999), (150, 888), (200, 777), (300, 999), (400, 1009), (450, 1019), (500, 1399)]
    gas_stations3 = [(101,), (100, 100), (102, 1)]
    gas_stations4 = [(34, 1), (105, 9), (9, 10), (134, 66), (215, 90), (999, 1999), (49, 0), (10, 1999), (200, 2), (300, 500), (12, 34), (1, 23), (46, 20), (80, 12), (1, 1999), (90, 33), (101, 23), (34, 88), (103, 0), (1, 1)]

    print(solution(500, 4, gas_stations1) == 4300)
    print(solution(500, 7, gas_stations2) == 410700)
    print(solution(500, 3, gas_stations3) == "Impossible")
    print(solution(100, 20, gas_stations4) == 0)
    print(solution(100, 0, []) == "Impossible")

 

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

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

相关文章

佳易王电玩店ps5计时计费系统软件倒计时语音提醒软件操作教程

一、前言 【试用版软件下载可以点击最下方官网卡片】 佳易王电玩店ps5计时计费系统软件倒计时语音提醒软件操作教程 1、时间显示&#xff1a;正常使用时间&#xff0c;直观显示在对应桌旁。 2、倒计时显示&#xff1a;右侧显示剩余多少分钟&#xff0c; 3、定时语音提醒&am…

zookeeper选举kafka集群的controller

zookeeper选举kafka集群的controller目录 文章目录 zookeeper选举kafka集群的controller目录前言一、实操体验controller的选举二、模拟controller选举四、删除controller节点 前言 kafka集群的controller是kafka集群中一个有特殊作用的broker&#xff0c;负责整个kafka集群的…

【网络原理】TCP保持“可靠传输”的秘密--确认应答与超时重传机制

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;计算机网络那些事 在上一篇文章中&#xff0c;我们研究了UDP报文的结构&#xff0c;由于其报头中只有两个字节来记录报文长度&#xff0c;导致一次最多只能传输 64KB 的数据&#xff0c;这完全无法满…

Mamba 架构在医学图像分析中的全面综述:分类、分割、重建及其他应用

Mamba 是一种状态空间模型&#xff08;State Space Model, SSM&#xff09;的特例&#xff0c;作为医学图像分析中模板驱动深度学习方法的替代方案&#xff0c;正日益受到关注。尽管 transformer 是强大的架构&#xff0c;但它也存在一些缺陷&#xff0c;例如计算复杂度为平方级…

图元是什么,图元在组态设计中发挥什么作用

从事HMI设计的小伙伴&#xff0c;肯定听说过图元的这个概念&#xff0c;图元简单可以理解为构成图形的最近本元素&#xff0c;如线、面、几何体等等&#xff0c;在一些组态软件中&#xff0c;图元的的重要性甚至超过了界面&#xff0c;因为有了图元就意味着有了千变万化的界面&…

[ESP32]ESP-IDF使用组件添加U8g2图形库

U8g2 在ESP32使用u8g2的时候可以使用添加component的方式进行, 由于官方的component库没有, 这里我找到了一个可以使用的github库, 使用git的方式进行添加这一个库 具体的原理可以看[官方手册](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-guides/to…

《Windows PE》4.1.4 手工重构导入表

接下来我们做一个稍微复杂一些的实验&#xff0c;实验需要四个程序&#xff1a; HelloWorld.exe&#xff1a;弹出MessageBox窗口&#xff08;实验1已实现&#xff09;。 Regedit.exe&#xff1a;添加注册表启动项。 LockTray.exe&#xff1a;锁定任务栏窗口。 UnLockTray.exe&…

各省份农林牧渔业总产值统计数据(2000-2022年)

数据来源 《中国统计年鉴》 农业、林业、牧业和渔业作为国民经济的重要组成部分&#xff0c;对于保障国家粮食安全、促进区域经济发展、实现农业农村现代化和乡村振兴具有重要意义。 2000年-2022年全国各省份农林牧渔业总产值统计数据&#xff08;大数据&#xff09;.zip资源…

DBMS-3.1 SQL(1)——SQL概述和DDL

本文章的素材与知识来自李国良老师和王珊老师。 SQL概述 1.定义 2.SQL语句分类 数据定义语言DDL&#xff08;Data Definition Language&#xff09; 一.表 1.创建表 &#xff08;1&#xff09;语法 中括号内的项为可选项。分号标志着一条SQL语句的结束。SQL语句不区分大小…

【Spring Boot React】Spring Boot和React教程 完整版

【Spring Boot & React】Spring Boot和React教程 在B站找到一个不错的SpringBoot和React的学习视频&#xff0c;作者是amigoscode 【Spring Boot & React】Spring Boot和React教程 2023年更新版【Spring Boot React】价值79.9美元&#xff0c;全栈开发&#xff0c;搭…

付费计量系统实体和接口(1)

13.System entities and interfaces 系统实体和接口 See also Clause 4 for a discussion on general concepts and Clause 5 for generic entity model. 参见条目 4 讨论总体概念、条目 5 通用实体模型。 An entity specification should specify the embodied functions and …

【Unity踩坑】UWP项目安装包认证失败

问题&#xff1a;在Unity导出的VS项目&#xff0c;打包生成appx后&#xff0c;进行应用认证时失败。提示部分API不支持。 API __C_specific_handler in kernel32.dll is not supported for this application type. UnityPlayer.dll calls this API.API DXGIGetDebugInterface1 …

【Linux】进程控制(创建、终止、等待、替换)

文章目录 1. 进程创建2. 进程终止3. 进程等待4. 进程程序替换4.1 认识进程替换4.2 认识全部接口 1. 进程创建 如何创建进程我们已经在之前学习过了&#xff0c;无非就是使用fork()&#xff0c;它有两个返回值。创建成功&#xff0c;给父进程返回PID&#xff0c;给子进程返回0&…

LLM大模型常见面试题汇总(含答案)

最近秋招正在如火如荼地进行中&#xff0c;看到很多人的简历上都包含大模型相关的工作&#xff0c;各家大厂和初创都很舍得给钱&#xff0c;动辄百万年包也变得不再稀奇。 因此在大模型纵横的这个时代&#xff0c;不仅大模型技术越来越卷&#xff0c;就连大模型相关的岗位和面…

零点校准说明

目录 注意&#xff0c;校准时电机不能带负载&#xff0c;否则校准容易出错。 零点校准 点击【零点校准】&#xff0c;显示“校准中…”, 如果是“High Current”类型电机&#xff0c;电机先“嘀”一声测量电阻电感&#xff08;耗时约5秒&#xff09;&#xff0c;然后再正转一圈…

【实战】Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP

大家好&#xff0c;我是冰河~~ 自己搭建的网站刚上线&#xff0c;短信接口就被一直攻击&#xff0c;并且攻击者不停变换IP&#xff0c;导致阿里云短信平台上的短信被恶意刷取了几千条&#xff0c;加上最近工作比较忙&#xff0c;就直接在OpenResty上对短信接口做了一些限制&am…

Vivado viterbi decoder license

Viterbi Decoder 打卡以上链接 添加后next后&#xff0c; 会发送lic文件到邮件&#xff0c;vivado导入lic即可

Latex技巧——参考文献中加入url和doi

有的期刊要求在参考文献里加入url或者doi, 例如下图中蓝色的字体。 在bib里编辑为下图中note行&#xff0c;也就是利用\href命令。\href后第一个{}内为网址&#xff0c;第二个{}为在参考文献中显示的蓝色文字。一般来说&#xff0c;两个{}内的文字相同。若遇到有些网址有下划线…

不是哥们,真有人拿 AI 来面试啊?

大家好&#xff0c;我是八哥。如今 AI 已经渗透到了我们的生活、求职、工作等方方面面。就拿求职来说&#xff0c;今年的美团校招&#xff0c;已经用上了 AI 来当面试官&#xff0c;降本增效。 我自己也当过面试官&#xff0c;其实对 AI 面试官还是挺好奇的。毕竟每个候选人的…

UOM无人机空域快速申请技术详解

UOM无人机空域快速申请技术详解主要包括以下几个步骤&#xff1a; 一、准备阶段 1. 实名登记&#xff1a;首先&#xff0c;您需要在相应的民航部门进行无人机的实名登记&#xff0c;这是合法飞行的前提。 2. 了解规定&#xff1a;熟悉并遵守当地关于无人机飞行的法律法规&am…