处理技巧 uestc 1817

it2026-04-21  8

#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

最新回复(0)