70分求助!!!(后面三个测试点TLE)
  • 板块学术版
  • 楼主zx_byu
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/12 20:24
  • 上次更新2024/10/12 22:02:40
查看原帖
70分求助!!!(后面三个测试点TLE)
941222
zx_byu楼主2024/10/12 20:24
#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    vector<int> d;
    for (int i = 1; i <= n; ++i) {
        cin >> d[i];
    }
    int days = 0;
    while (true) {
        int maxD = -1, maxI = -1;
        // 找到当前下陷最深的区域
        for (int i = 0; i < n; ++i) {
            if (d[i] > maxD && d[i] != 0) {
                maxD = d[i];
                maxI = i;
            }
        }
        if (maxDepth == -1) break; // 如果没有找到下陷深度大于0的区域,则结束
        // 向左右扩展区间
        int left = maxI, right = maxI;
        while (left >= 0 && d[left] != 0) --left;
        while (right < n && d[right] != 0) ++right;
        // 填充区间内的所有区域
        for (int i = left + 1; i < right; ++i) {
            d[i]--;
        }
        days++; // 记录天数
    }
    cout << days << endl;
    return 0;
}
2024/10/12 20:24
加载中...