已ac

Y  •  2天前


include <bits/stdc++.h>

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;

}


评论:

请先登录,才能进行评论