http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=721&pid=1002从前往后记录,从后往前记录,和LeetCode一题蛮像
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
const int MAXN = 100000 + 9;
int a[MAXN];
int b[MAXN];
int c[MAXN];
void solve()
{
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int max1 = 0;
for (int i = 1; i < n; i++) {
max1 = max(max1, abs(a[i] - a[i - 1]));
b[i] = max1;
// cout << b[i];
}
// cout << endl;
int max2 = 0;
for (int i = n - 2; i >= 0; i--) {
max2 = max(max2, abs(a[i + 1] - a[i]));
c[i] = max2;
// cout << c[i];
}
// cout << endl;
unsigned long long ans = c[1] + b[n - 2];
for (int i = 1; i < n - 1; i++) {
ans += max(abs(a[i + 1] - a[i - 1]), max(b[i - 1], c[i + 1]));
}
cout << ans << endl;
}
int main()
{
//freopen("in", "r", stdin);
int t = 1;
scanf("%d", &t);
while (t--) {
solve();
}
}