hd5933 ArcSoft's Office Rearrangement

血红的双手。 提交于 2019-11-26 14:12:05

链接

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;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!