1033 To Fill or Not to Fill

news2024/11/25 2:38:56

在这里插入图片描述
在这里插入图片描述
是否有能到达的站点

  • 无,输出当前距离(最后一个到达站点距离+满油箱状态下行走距离)
    • 有价格更低的站点
      如果油量不足以到达新站点,加刚好到达该站点的油量(只加可到达范围内最便宜的油)
    • 有价格更高的站点
      在当前油量基础上,加满油箱
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 510;
const int INF = 1000000000;
struct station{
	double price, dis;
	bool operator < (station &s1){//加油站点按照距离升序排序 
		return dis < s1.dis;
	}
}s[maxn];
int main(){
	int n;
	double c, d, dAvg;
	cin >> c >> d >> dAvg >> n;
	for(int i = 0; i < n; i++){
		cin >> s[i].price >> s[i].dis;
	}
	s[n].price = 0;//记得加上终点,价格设为0即可 
	s[n].dis = d;
	sort(s, s + n);//对所给站点按照距离从近到远排序 
	if(s[0].dis != 0){//初始状态无油,若没有距离为0的站点则不能出发 
		cout << "The maximum travel distance = 0.00";
	}
	else{
		int cur = 0, k;//cur当前站点    
		double minP, full = c * dAvg, ans = 0, have = 0, need; //full满油箱状态下可走的距离,ans开销,have当前油量   
		while(cur < n){//到达终点或不能继续时结束 
			k = -1;//最低价格的站点编号 
			minP = INF;//最低价格 
			for(int i = cur + 1; i <= n && (s[i].dis - s[cur].dis) <= full; i++){//找到能到达的站点,并记录其中价格最低的,当价格低于起始站中断 
				if(s[i].price < minP){
					minP = s[i].price;
					k = i;
					if(minP < s[cur].price) break;
				}
			} 
			if(k == -1) break;//当前站点加满油也到达不了任何站点 
			need = (s[k].dis - s[cur].dis) / dAvg;//到达该优惠站点需要的汽油量 
			if(s[k].price < s[cur].price){//出现价格比当前站点更便宜 
				if(have < need){//当前油量不足以到达k站点 
					ans += (need - have) * s[cur].price;
					have = 0;
				}
				else have -= need;//当前油量可以到达k站点 
			}
			else{//能到达但是价格高于当前站点 
				ans += s[cur].price * (c - have);//加满,注意可能当前还有一定油量 
				have = c - need;
			}
			cur = k;//更新当前站点 
		}
		if(cur != n) printf("The maximum travel distance = %.2f", s[cur].dis + full);
		else printf("%.2f", ans);
	}
	return 0;
} 

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

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

相关文章

【带你了解下前端开发语言有那些】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

[flink 实时流基础] 输出算子(Sink)

学习笔记 Flink作为数据处理框架&#xff0c;最终还是要把计算处理的结果写入外部存储&#xff0c;为外部应用提供支持。 文章目录 **连接到外部系统****输出到文件**输出到 Kafka输出到 mysql自定义 sink 连接到外部系统 Flink的DataStream API专门提供了向外部写入数据的方…

8_springboot_shiro_jwt_多端认证鉴权_多Reaml管理

1. 目标 前面一直讨论的是只有一个Reaml的场景&#xff0c;Shiro是可以管理多个Realm的。那么什么场景下&#xff0c;我们需要定义多个Realm&#xff0c;以及Shiro框架是如何管理多个Realm的&#xff0c;他们是如何工作的。本章将会解释上面的问题&#xff0c;最后会配置前面章…

MySQL中MHA故障排查

文章目录 MySQL故障排查MySQL主从环境常见故障1、故障一1.1 故障现象1.2 报错原因1.3 解决方法 2、故障二2.1 故障现象2.2 报错原因2.3 解决方法 3、故障三3.1 故障现象3.2 报错原因3.3 解决方法 4、故障四4.1 故障现象4.2 问题分析4.3 解决方法 5、故障五5.1 故障现象5.2 报错…

neo4j使用详解(六、cypher即时时间函数语法——最全参考)

Neo4j系列导航&#xff1a; neo4j及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 6.时间函数-即时类型 表示具体的时刻的时间类型函数 6.1.date函数 年-月-日时间函数&#xff1a; yyyy-mm-dd 6.1.1.获取date da…

深度学习500问——Chapter05: 卷积神经网络(CNN)(3)

文章目录 5.14 理解转置卷积与棋盘效应 5.14.1 标准卷积 5.14.2 转置卷积 5.15 卷积神经网络的参数设置 5.16 提高卷积神经网络的泛化能力 5.17 卷积神经网络在不同领域的应用 5.17 .1 联系 5.17.2 区别 5.14 理解转置卷积与棋盘效应 5.14.1 标准卷积 在理解转置卷积之前&…

从学习海底捞到学习巴奴,中国餐饮带洋快餐重归“产品主义”

俗话说“民以食为天”&#xff0c;吃饭一向是国人的头等大事&#xff0c;餐饮业也是经济的强劲助推力。新世纪以来&#xff0c;餐饮业不断讲述着热辣滚烫的商业故事。 2006年&#xff0c;拥有“必胜客”、“肯德基”等品牌的餐饮巨头百胜集团&#xff0c;组织两百多名区域经理…

代码随想录算法训练营第24天|理论基础 |77. 组合

理论基础 jia其实在讲解二叉树的时候&#xff0c;就给大家介绍过回溯&#xff0c;这次正式开启回溯算法&#xff0c;大家可以先看视频&#xff0c;对回溯算法有一个整体的了解。 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法&#xff08;理…

Windows安装禅道系统结合Cpolar实现公网访问内网BUG管理服务

文章目录 前言1. 本地安装配置BUG管理系统2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射本地服务3. 测试公网远程访问4. 配置固定二级子域名4.1 保留一个二级子域名5.1 配置二级子域名6. 使用固定二级子域名远程 前言 BUG管理软件,作为软件测试工程师的必备工具之一。在…

竞技之道-打造成功竞技游戏的实战指南【文末送书】

文章目录 理解竞技游戏的本质游戏力&#xff1a;竞技游戏设计实战教程【文末送书】 在当今数字化时代&#xff0c;游戏已经不再是一种单纯的娱乐方式&#xff0c;而是成为了一门具有巨大商业潜力的产业。特别是竞技游戏&#xff0c;它们引领着全球数十亿玩家的潮流&#xff0c;…

引用,内联函数,auto函数,指针nullptr

一&#xff1a;引用 1.1 该文章的引用是对上一篇引用的进行补充和完善 按理来说&#xff0c;double可以隐式转换为int&#xff0c;那起别名的时候为什么不可以类型转换呢&#xff1f; 那是因为&#xff0c;在类型转换的时候&#xff0c;会创建一个临时变量&#xff0c;让后再…

基于kalman的单目标追踪,以及demo测试(Python and C++)

一.卡尔曼滤波简单介绍 我们可以在任何含有不确定信息的动态系统中的使用卡尔曼滤波&#xff0c;对系统的下一步动作做出有根据的猜测。猜测的依据是预测值和观测值&#xff0c;首先我们认为预测值和观测值都符合高斯分布且包含误差&#xff0c;然后我们预设预测值的误差Q和观测…

OMNet项目1 —— Linux环境配置

项目环境搭建&#xff0c;软件版本Ubuntu16&#xff0c;OMNet5.0 Linux配置环境步骤 安装VMWare虚拟机16.25&#xff08;个人号养老版本&#xff09;下载ISO镜像文件Ubuntu16 链接&#xff1a;https://pan.baidu.com/s/1SETyn6t4qIUfli1uRRgm3w?pwdf4ua 提取码&#xff1a;f…

软件设计师25--逻辑结构设计

软件设计师25--逻辑结构设计 考点1&#xff1a;关系模式相关概念数据模型关系模型相关概念完整性约束 考点2&#xff1a;E-R图转换关系模式逻辑结构设计 - E-R模型转关系模式E - R图转关系模式 考点1&#xff1a;关系模式相关概念 数据模型 层次模型网状模型关系模型面向对象…

第四百三十六回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"不同平台上换行的问题"相关的内容&#xff0c;本章回中将介绍如何在页面上显示蒙板层.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我…

ElMessageBox.confirm中内容换行

ElMessageBox.confirm(导入结果&#xff1a;<br/>成功导入${res.successCount}条数据&#xff0c;导入失败${res.errorList.length}条数据。<br/>${str},"提示",{confirmButtonText: "确定",cancelButtonText: "取消",type: "w…

云原生应用(5)之Dockerfile精讲及新型容器镜像构建技术

一、容器与容器镜像之间的关系 说到Docker管理的容器不得不说容器镜像&#xff0c;主要因为容器镜像是容器模板&#xff0c;通过容器镜像我们才能快速创建容器。 如下图所示&#xff1a; Docker Daemon通过容器镜像创建容器。 二、容器镜像分类 操作系统类 CentOS Ubuntu 在…

38.HarmonyOS鸿蒙系统 App(ArkUI)堆叠布局结合弹性布局

层叠布局用于在屏幕上预留一块区域来显示组件中的元素&#xff0c;提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠&#xff0c;容器中的子元素&#xff08;子组件&#xff09;依次入栈&#xff0c;后一个子元素覆盖前一个子元素&#xff0c;子元素…

Spring源码分析(BeanDefinition)

文章目录 Spring源码分析&#xff08;BeanDefinition&#xff09;一、概述1、BeanDefinition 的理解2、BeanDefinition 接口3、BeanDefinition 的实现4、BeanDefinitionHolder 类 二、BeanDefinition 的加载1、reader 的获取1&#xff09;registerAnnotationConfigProcessors2&…

浅谈高阶智能驾驶-NOA领航辅助的技术与发展

浅谈高阶智能驾驶-NOA领航辅助的技术与发展 附赠自动驾驶学习资料和量产经验&#xff1a;链接 2019年在国内首次试驾特斯拉NOA领航辅助驾驶的时候&#xff0c;当时兴奋的觉得未来已来;2020年在试驾蔚来NOP领航辅助驾驶的时候&#xff0c;顿时不敢小看国内新势力了;现在如果哪家…