贪心算法
先假设第一天的天数是至少需要的天数,即ans=d[0];(不管后面如何都至少需要d[0]天)
如果d[i] < d[i+1] 那么ans=ans+当前部分深度-前一部分深度
如果d[i] >= d[i+1] 那么 ans不变,因为前一区域填坑的时候肯定会顺带把下一区域的坑给填了
代码如下:
#include <iostream>
using namespace std;
int n, d[100010];
int main()
{
cin >> n;
for (int i = 0; i < n; i++) cin >> d[i];
int ans = d[0];
for (int i = 0; i < n; i++)
if (d[i] < d[i+1]) ans += d[i+1]-d[i];
cout << ans;
return 0;
}