蒟蒻求大佬教教
查看原帖
蒟蒻求大佬教教
1140603
Winterblessed楼主2024/2/26 21:45

请大佬帮我看看哪里出了问题(未提交测试,因为给样例本地跑无法通过)

这可能是一种选择,但应该不是最优,因为我没办法想象,我感觉不管咋样,天数都是一定的,不存在最优

蒟蒻求大佬教教

#include <iostream>
#include <vector>

using namespace std;
using ll = long long;

int main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int n, sum{}, count{};   // sum 为所有坑的深度总和
    cin >> n;
    vector<int> vec(n);
    for (auto &i : vec) {
        cin >> i;
        sum += i;
    }

    while (sum != 0) {   // sum 不为0,就说明坑没填完,还得继续
        bool flag = false;   // 填坑 开始标志
        for (int i = 0; i < vec.size(); ++i) {
            if (vec[i] != 0) {   // 如果当前坑不为0,要填坑
                vec[i]--;        // 坑深度--
                sum--;           // 总深度--
                flag = true;     // 填过坑了
            }
            if ((i == vec.size() - 1 || vec[i] == 0) && flag) { continue; }
            // 到路最后尽头了 或者遇到 平路(坑==0)
            // flag 保证一定填过坑才会开始这个if 跳过循环
        }
        count++;   // 每次循环必定填坑,每次填坑 count++;
    }
    cout << count;
    return 0;
}
2024/2/26 21:45
加载中...