0分,思路应该没问题,代码全注释
查看原帖
0分,思路应该没问题,代码全注释
679659
wzhmyt楼主2024/10/21 20:31
#include <bits/stdc++.h> 
using namespace std;
const int maxn = 1e5 + 5;
int n, d;
int a[maxn], v[maxn];
long long ans = 0;
int main() {
    cin >> n >> d;
    for (int i = 1; i < n; i++) {
        cin >> v[i];
        v[i] = ceil(v[i] / double(d)); // 转换为需要的油量
    }
    for (int i = 1; i <= n; i++) cin >> a[i];
    int res = 0; // 当前的油量初始化为0
    int mi = INT_MAX; // 初始化为最大整数,以便第一次比较时更新
    for (int i = 1; i < n; i++) {
        mi = min(mi, a[i]); // 更新最低油价
        if (res >= v[i]) {
            res -= v[i]; // 有足够的油,减少油量
        } else {
            int need = v[i] - res; // 计算还需要多少油
            if (need < 0) need = 0; // 确保需要的油量不为负
            ans += need * mi; // 更新总花费
            res = need; // 更新剩余油量
        }
    }
    cout << ans << endl;
    return 0;
}	
2024/10/21 20:31
加载中...