网址如下:
(这是我拿去翻译的版本)
简单来说,题目要求我们求出一个子串,在奇数位的数加,偶数位的数减,求总的最大值
用贪心就可以做了
在波峰的时候加,波谷的时候减
代码如下:
#include<cstdio>
const int maxP = 150000;
int P, val[maxP], ans;
int main(void)
{
scanf("%d", &P);
for(int i = 0; i < P; i++) scanf("%d", &val[i]);
bool state = true;
for(int i = 0; i < P; i++)
if(state){//奇数位
if(i == P - 1 || val[i] > val[i + 1]){
ans += val[i]; state = false;
}
}
else{//偶数位
if(i != P - 1 && val[i] < val[i + 1]){
ans -= val[i]; state = true;
}
}
printf("%d", ans);
return 0;
}