真题_CSP2023-J第二轮 公路

仙女赐你

#include <bits/stdc++.h>
using namespace std;
const int N=100005;
int n,d,v[N],a[N];
long long ans;
int main()
{
    cin>>n>>d;
    for(int i=1;i<n;i++) cin>>v[i];
    for(int i=1;i<=n;i++) cin>>a[i];
    int minn=a[1];
    int rest=0;
    for(int i=1;i<n;i++){
        minn=min(a[i],minn);
        if(rest>=v[i]){
            rest-=v[i];
            continue;
        }
        int t=(v[i]-rest+d-1)/d;
        ans+=1ll*t*minn;
        rest=t*d+rest-v[i];
    }
    printf("%lld\n",ans);
    return 0;
}

题目描述

小苞准备开着车沿着公路自驾。
公路上一共有n个站点,编号为从1 到 n 。其中站点 i 与站点 i + 1 的距离为 Vi 公里。
公路上每个站点都可以加油, 编号为 i 的站点一升油的价格为 ai 元,且每个站点只出售整数升的油。
小苞想从站点 1 开车到站点 n , 一开始小苞在站点 1 且车的油箱是空的。已知车的油箱足够大, 可以装下任意多的油,且每升油可以让车前进 d 公里。问小苞从站点1开到站点 n, 至少要花多少钱加油?

输入

输入的第一行包含两个正整数 n 和 d , 分别表示公路上站点的数量和车每升油可以前进的距离。
输入的第二行包含 n - 1个正整数V1,V2...Vn-1 分别表示站点间的距离。
输入的第三行包含 n 个正整数a1,a2... an, 分别表示在不同站点加油的价格。
 

输出

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

样例输入
5 4
10 10 10 10
9 8 9 6 5

样例输出
79

提示

最优方案下: 小苞在站点1买了3升油, 在站点2购买了5升油, 在站点4购买了2升油。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值