[公路](https://www.acwing.com/solution/content/206442/)
#include <bits/stdc++.h>
using namespace std;
int n,d;
long long ans=0;
long long v[100005];
long long a[100005];
long long y[100005];
long long youjia;//油价
int main() {
scanf("%d%d",&n,&d);
for (int i=2;i<=n;i++){
scanf("%d",&v[i]);
v[i]+=v[i-1];//计算站点i到起点的距离
y[i]=ceil(1.0*v[i]/d);//从起点到当前站点的油耗,向上取整
}
for (int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
youjia=a[1];//出发先在站点1买油
for (int i=2;i<=n;i++){
ans+=youjia*(y[i]-y[i-1]);//增加本段用油的油价
youjia=min(youjia,a[i]);//如果当前站点油比用的油便宜,换成当前站点买
}
cout<<ans;
return 0;
//这题是在先买可以到下一站点的油,然后再去,这是到下一站点油没了,就继续买,但是要从后往前推
acwing 每日一题公路
最新推荐文章于 2024-07-08 22:12:26 发布
![](https://img-home.csdnimg.cn/images/20240611030827.png)