南沙C++信奥赛陈老师解一本通题 2099:【23CSPJ普及组】公路(road)

news/2024/10/3 10:42:14

 

2099:【23CSPJ普及组】公路(road)


时间限制: 1000 ms         内存限制: 524288 KB
提交数:3793    通过数: 1575

【题目描述】

小苞准备开着车沿着公路自驾。

公路上一共有 nn 个站点,编号为从 11 到nn。其中站点 ii 与站点i+1i+1 的距离为vivi 公里。

公路上每个站点都可以加油,编号为ii 的站点一升油的价格为aiai 元,且每个站点只出售整数升的油。

小苞想从站点 11 开车到站点 nn,一开始小苞在站点 11 且车的油箱是空的。已知车的油箱足够大,可以装下任意多的油,且每升油可以让车前进dd 公里。问小苞从站点 11 开到站点 nn,至少要花多少钱加油?

【输入】

输入的第一行包含两个正整数 nn 和dd,分别表示公路上站点的数量和车每升油可以前进的距离。

输入的第二行包含n−1n−1 个正整数v1v1,v2v2…vn−1vn−1 ,分别表示站点间的距离。

输入的第三行包含 nn 个正整数 a1a1,a2a2…anan ,分别表示在不同站点加油的价格。

【输出】

输出一行,仅包含一个正整数,表示从站点 11 开到站点 nn,小苞至少要花多少钱加油。

【输入样例】

5 4
10 10 10 10
9 8 9 6 5

【输出样例】

79

【提示】

【样例 1 解释】

最优方案下:小苞在站点 11 买了 33 升油,在站点22 购买了 55 升油,在站点 44 购买了 22 升油。

【数据范围】

对于所有测试数据保证:1≤n≤1051≤n≤105 ,1≤d≤1051≤d≤105 ,1≤vi≤1051≤vi≤105 ,1≤ai≤1051≤ai≤105 。

测试点 n≤ 特殊性质
1∼5 8
6∼10 103
11∼13 105 A
14∼16 105 B
17∼20 105

 

特殊性质 A:站点 11 的油价最低。

特殊性质 B:对于所有1≤i<n1≤i<n,vivi为 dd 的倍数。

 

 

#include <bits/stdc++.h>
using namespace std;
long long  v[100001], a[100001]; //v为站点距离 a为不同站点的加油价格 
int main()
{long long n,d;double oil=0,leave=0;//leave 表示目前还剩多少升油 long long money=0;cin>>n>>d;for(int i=1;i<=n-1;i++)cin>>v[i];for(int i=1;i<=n;i++)cin>>a[i];int i=1;while(i<=n)		//站点  {int j=i+1;for(;j<=n-1;j++) //贪心算法,加油加到到比目前站点小的价格 if(a[i]>a[j])break;double dis=0;for(int k=i+1;k<=j;k++)	 	//加油的距离即为i站点到j点的距离dis+=v[k-1];			//注意距离即为前站点i-1的距离		oil=dis/d-leave;		    double buy=ceil(oil);leave=buy-oil;money+=buy*a[i];i=i!=j?j:i++;		//不能用for,否则i=j后,i会继续加1 }cout<<money;		return 0;
}

 

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

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

相关文章

Leetcode 540. 有序数组中的单一元素

1.题目基本信息 1.1.题目描述 给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。 请你找出并返回只出现一次的那个数。 你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。 1.2.题目地址 https://leetcode.cn/problems/sin…

六、redis之set

Redis集合是成员的无序集合。可以用来保存唯一的成员。 注意:对于以下的命令,涉及删除成员的,如果集合中的所有元素都被移除,则集合会被删除。如果集合原先不存在,被当作空集合。 SADD SADD key member [member ...]sadd命令将一系列成员添加到set中。SMEMBERS SMEMBERS k…

IDEA创建Gradle工程-实践

1、下载Gradle 下载地址:https://gradle.org/install/#manually 进入后点击【Binary-only】下载zip包。 (国内下载可能慢,可用阿里镜像:https://mirrors.aliyun.com/macports/distfiles/gradle/)2、安装Gradle 解压zip到自定义目录:G:\OriginLib\gradle-8.9配置环境变量 …

Leetcode 2300. 咒语和药水的成功对数

1.题目基本信息 1.1.题目描述 给你两个正整数数组 spells 和 potions ,长度分别为 n 和 m ,其中 spells[i] 表示第 i 个咒语的能量强度,potions[j] 表示第 j 瓶药水的能量强度。 同时给你一个整数 success 。一个咒语和药水的能量强度 相乘 如果 大于等于 success ,那么它们…

java 反序列化 cc1 复现

cc1java反序列化cc1漏洞复现,环境commoncollections3.2.1, java8u65. 分析的时候从执行命令的部分开始,一点一点的倒退回反序列化接口.目的:在java反序列化的时候会利用构造函数来进行对象的构造,那么我们的目标就是只调用构造函数来执行命令. 源码剖析 Transformer 一个接口,定…

吴恩达机器学习课程 笔记5 神经网络

神经网络原理 神经网络是一种受生物神经系统启发的计算模型,用于学习和处理复杂的数据模式。神经网络通过一系列相互连接的简单处理单元(称为神经元或节点)来模拟大脑的功能。下面详细介绍神经网络的基本原理。 神经网络的基本构成神经元(Neuron):神经元是神经网络的基本…

在树莓派上部署yolo模型推理并使用onnx加速

首先在这里感谢一下这位大佬:学不会电磁场的个人空间-学不会电磁场个人主页-哔哩哔哩视频 (bilibili.com) 这里使用的代码是从手把手教你使用c++部署yolov5模型,opencv推理onnx模型_哔哩哔哩_bilibili处来的我这里只记录下更换成自己的模型的应用以及提供一份全注释的版本树莓…

Redis 发布订阅模式

概述 Redis 的发布/订阅是一种消息通信模式:发送者(Pub)向频道(Channel)发送消息,订阅者(Sub)接收频道上的消息。Redis 客户端可以订阅任意数量的频道,发送者也可以向任意频道发送数据。在发送者向频道发送一条消息后,这条消息就会被发送到订阅该频道的客户端(Sub)…