题目链接:https://www.luogu.org/problemnew/show/P5019
这道题目是一道模拟题,但是它有一点贪心的思想。
我们假设当前最大的深度是 \(d\) ,那么我们需要把所有深度为d的坑全都填成深度为 \(d-1\) ,然后去填深度为 \(d-1\) 的坑……
实现代码如下(手动开启了O2优化,不然会TLE2组):
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize(2) const int maxn = 100010; int n, d[maxn], dmax, cnt; int main() { scanf("%d", &n); for (int i = 0; i < n; i ++) { scanf("%d", d+i); dmax = max(dmax, d[i]); } for (; dmax > 0; dmax --) for (int i = 0; i < n; i ++) if (d[i] >= dmax && (!i || d[i-1] < dmax)) cnt ++; printf("%d\n", cnt); return 0; }