链接
http://acm.hdu.edu.cn/showproblem.php?pid=5933
题解
模拟…
代码
#include <bits/stdc++.h>
#define maxn 100010
#define linf (1ll<<60)
#define sqr(x) ((x)*(x))
#define cl(x) memset(x,0,sizeof(x))
using namespace std;
typedef long long ll;
ll N, K, a[maxn];
int main()
{
ll T, kase, s, i, sz, ans, last;
scanf("%lld",&T);
for(kase=1;kase<=T;kase++)
{
printf("Case #%lld: ",kase);
scanf("%lld%lld",&N,&K);
s=0;
for(i=1;i<=N;i++)scanf("%lld",a+i), s+=a[i];
if(s%K!=0)
{
printf("-1\n");
continue;
}
sz=s/K;
ans=0;
last=0;
for(i=1;i<=N;i++)
{
if(last>0)
{
a[i]+=last;
ans++;
}
ans+=a[i]/sz;
if(a[i]%sz==0)ans--;
last=a[i]%sz;
}
printf("%lld\n",ans);
}
return 0;
}