如果代码形如此下
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,d,dis;
int di[100010];
int a[100010],b[100010];
int seil(int a,int b){
if(a%b)return a/b+1;
return a/b;
}
signed main(){
cin>>n>>d;
for(int i=2;i<=n;i++){
cin>>di[i];
di[i]=di[i-1]+di[i];
}
int j=1;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]<a[j])b[j]=i,j=i;
}
int u=1;
int cost=0;
while(u<n){
int v=b[u];
dis-=(di[v]-di[u]);
if(dis<0){
int x=seil(abs(dis),d);
cost=cost+x*a[u];
dis=dis+x*d;
}
u=v;
}
cout<<cost<<'\n';
}

很有可能需要特判起点加油站便是最便宜的