Y • 2天前
using namespace std; int main() {
int n,d,cur=0; // res为最后总的油钱,cur是目前油箱里的油
long long int res = 0;
cin >> n >> d;
int dis[n],price[n+1];
for(int i=1;i<n;i++)
cin >> dis[i];
for(int i=1;i<=n;i++)
cin >> price[i];
int minCost = price[1]; // 当前最便宜的油价
for(int i=1;i<n;i++) {
minCost = min(price[i],minCost); // 更新最便宜的油价
if(cur>=dis[i]) { // 如果油箱剩余的油还能继续走
cur -= dis[i]; // 走到下一个站点
continue; // 不加油,直接跳过循环
}
// 如果油箱剩余的油走不到下一个站点
res += (long long int)(dis[i]-cur+d-1)/d*minCost; // 加油花费
cur += (dis[i]-cur+d-1)/d*d; // 加油之后可以走的里程数
cur -= dis[i]; // 走到下一个站点
}
cout << res << endl;
return 0;
}
评论:
请先登录,才能进行评论