纪中第二天(c组)(2)
题目(2)
思路
动归。状态转移方程是 a[i][0](奇数次)=max(a[i-1][1](上一次偶数的最大值)+a[i][2](本身高度),a[i-1][0](上一次奇数的最大值))
a[i][1](偶数次)=max(a[i-1][0](上一次奇数的最大值)-a [i][2](本身高度),a[i-1][1](上一次偶数的最大值))
#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
int a[150001][3],n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i][2];
a[1][0]=a[1][2];
for(int i=1;i<=n;i++)
{
a[i][0]=max(a[i-1][1]+a[i][2],a[i-1][0]);
a[i][1]=max(a[i-1][0]-a[i][2],a[i-1][1]);
}
cout<<a[n][0];
return 0;
}