D. Maximum Sum on Even Positions(最大字段和边形)

D. Maximum Sum on Even Positions(最大字段和边形)_第1张图片 

要想获得最大的偶数位置的值之和,我们只能反转一个字段,只能反转字段长度为偶数的字段 ,这样才使得操作有效。

这样就变成了求最大字段和的问题,不过下标有了限制,回想一下,当时求最大字段和的时候,如果到 i 位置,字段和变为 0 ,那么我们将 字段和置为 0 

当我们从奇数 i 位置开始反转时,所产生的价值为 a[i]-a[i-1]+sum;(sum是之前产生的价值)

当从偶数 i 位置开始反转时,所产生的价值为 a[i-1]-a[i]+sum

const int N=2e5+5;

    int n,m,t;
    int i,j,k;
    ll a[N];
int main()
{
    //IOS;
    rush(){
        cin>>n;
        ll ans=0;
        for(i=0;i>a[i];
            if(i&1) continue;
            else ans+=a[i];
            //debug(a[i]);
        }
        ll maxx=0,odd=0,even=0;//odd 记录从奇数位置开始反转,even 记录从偶数位置反转
        for(i=2;i

 

你可能感兴趣的:(CF)