2018 长沙设计竞赛 H-数学考试 (贪心)

版权声明:转载注明下出处就行了。 https://blog.csdn.net/LJD201724114126/article/details/89322563

题目链接:哆啦A梦传送门

题解:贪心。

#include<bits/stdc++.h>

using namespace std;

typedef long long LL;

const int maxn=200010;
#define INF 0x3f3f3f3f

LL a[maxn];
LL ans[maxn];

int main()
{

    int ncase;
    scanf("%d",&ncase);

    while(ncase--)
    {

        int n,k;
        scanf("%d%d",&n,&k);

        a[0]=0;
        for(int i=1;i<=n;i++)
            scanf("%lld",a+i),a[i]+=a[i-1];


        for(int i=k;i<=n;i++) ///ans[i]表示以i为右端点,长度为k的和
        {
            ans[i]=a[i]-a[i-k];
        }

        LL item1=-999999999999999;
        LL item2=-999999999999999;

        for(int i=2*k;i<=n;i++) 
        {
            
            if(item1<ans[i-k]) item1=ans[i-k];
            if(item2<item1+ans[i]) item2=item1+ans[i];
//            item1=max(item1,ans[i-k]);
//            item2=max(item2,item1+ans[i]);
        }

        printf("%lld\n",item2);

    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/LJD201724114126/article/details/89322563