这道题我用搜索解的,没过,求大佬帮助
测试点信息:
8个MLE 2个TLE
#include <iostream>
#include <cstdio>
#define MAXN 100005
using namespace std;
int n;
int number[MAXN];
int answer;
int function(int left, int right){
if ((right - left) == 0 and number[left] == 0){
return 0;
}
int Min = 1e9;
int q = 0;
for (int i = left;i <= right; ++i){
if (number[i] <= Min){
Min = number[i];
q = i;
}
}
answer += Min;
for (int i = left;i <= right; ++i){
number[i] -= Min;
}
function(left, q - 1);
function(q + 1, right);
}
int main(){
cin >> n;
for (int i = 1;i <= n; ++i){
cin >> number[i];
}
function(1, n);
cout << answer << endl;
return 0;
}