#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
long long need[1000010],now[1000010];
int main()
{
int T,cases=1;
scanf("%d",&T);
while(T--)
{
int n,m,i,t;
scanf("%d%d",&n,&m);
long long res=0,ans=0;
memset(need,0,sizeof(need));
memset(now,0,sizeof(now));
for(i=1;i<=n;i++)
{
scanf("%d",&need[i]);
}
for(i=1;i<=n;i++)
{
now[i]+=now[i-1];
if(need[i]<now[i])
continue;
res=need[i]-now[i];
ans+=res;
now[i]+=res;
if(i+m<=n)
now[i+m]-=res;
}
printf("Case #%d: %lld\n",cases++,ans);
}
return 0;
}
1.第一个房子必须建
2.每天多建的如何累加?now数组。m天后失效怎么办?now[i+m]提前剪掉
3.AC
转载于:https://www.cnblogs.com/ray007great/archive/2013/05/05/3061422.html