[题目编号 : 5887]
题解
-
#1 admin | 2025-08-08 19:50:16``` #include<bits/stdc++.h> using namespace std; long long l[100005],y[100005]; int main(){ long long n,d,s=0,zlc=0; cin>>n>>d; for(long long i=1;i<n;i++)cin>>l[i]; for(long long i=1;i<=n;i++)cin>>y[i]; long long miny=y[1],jys=0,zjy=0; double sy=0; for(long long i=2;i<=n;i++){ zlc+=l[i-1]; //目前走过的总路程 jys=ceil((l[i-1]-sy)*1.0/d); //计算本次加油量 zjy+=jys; //总加油量 //根据后面的加油站价格计算加哪里的有 if (y[i]<miny){ s+=jys*miny; miny=y[i]; }else{ s+=jys*miny; } sy=zjy*d-zlc; //还能跑多远 } cout<<s; return 0; } ```