题解 P5638 【【CSGRound2】光骓者的荣耀】
蒟蒻在比赛最后半个小时才开始做的···交的时候数组少开了个0于是92->76
题意
给了你
题解
很明显,我们设所有路的长度之和为
之后,根据题意跳过中间
这个很好统计,我会线段树前缀和,挨个统计即可,复杂度为
代码
#include <cstdio>
#include <algorithm>
#define ll long long
using namespace std;
ll a[1000005],d[1000005];
int main() {
ll n,k,tot=0;
scanf("%lld %lld",&n,&k);
for(int i=1;i<n;i++)
{
scanf("%lld",&a[i]);
tot+=a[i];
d[i]=d[i-1]+a[i];
}
if(k==0)
{
printf("%lld",tot);
return 0;
}
ll maxn=-1;
for(int i=1;i<=n-k+1;i++) maxn=max(maxn,d[i+k-1]-d[i-1]);
//我是不会告诉你之前我写成d[i+k]-d[i]了
printf("%lld",tot-maxn);
return 0;
}