B. Light It Up

Posted lishengkangshidatiancai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B. Light It Up相关的知识,希望对你有一定的参考价值。

前缀和,维护两个前缀和,观察到如果i为奇数就可以在前面或后面插点

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll sum1,sum2;
int a[100010];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
       scanf("%d",&a[i]);
    sum1=0,sum2=0;
    a[n+1]=m;
    for(int i=1;i<=n+1;i++)
    {
        if(i%2==1)
        {
            sum1+=(a[i]-a[i-1]);
        }
        else
        {
            sum2+=(a[i]-a[i-1]);
        }
    }
    //printf("%lld
",sum1);
    ll ans=sum1;
    ll pre1=0,pre2=0;
    for(int i=1;i<=n;i++)
    {
        if(i%2==1)
        {
            pre1+=(a[i]-a[i-1]);
            if(a[i]-a[i-1]==1&&a[i+1]-a[i]==1)
            {
                continue;
            }
            else
            {
                ans=max(pre1+sum2-pre2-1,ans);
            }
        }
        else
        {
            pre2+=(a[i]-a[i-1]);
        }
        //printf("%lld
",ans);
    }
    printf("%lld
",ans);
}

 

以上是关于B. Light It Up的主要内容,如果未能解决你的问题,请参考以下文章

Light It Up CF1000B 思维

CodeForces 1000B Light It Up(贪心思维)

Codeforces 1000B Light It Up(思维)

The Preliminary Contest for ICPC Asia Shanghai 2019 B. Light bulbs

B. Light bulbs(2019 ICPC上海站)

2019 ACM-ICPC 上海网络赛 B. Light bulbs (差分)