n,d,{vi},{ai}同题意{fi}:=k=i∑next stopvkcur:=i,在i点停靠加油cost:=花费,ı.e.最终答案vol:=剩余油量
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,d,v[N],a[N],cur;
unsigned long long f[N],cost;
double vol;
int main() {
scanf("%d%d",&n,&d);
for (int i=1; i<n; i++) scanf("%d",&v[i]);
for (int i=1; i<=n; i++) scanf("%d",&a[i]);
f[1]=v[1],cur=1;
for (int i=2; i<=n; i++) {
if (a[cur]>a[i]) f[i]=v[i],cur=i;
else f[cur]+=v[i];
} for (int i=1; i<=n; i++) {
cost+=a[i]*ceil(f[i]*1.0/d-vol);
vol=ceil(f[i]*1.0/d-vol)-f[i]*1.0/d+vol;
} printf("%d\n",cost);
return 0;
}