牛客OI赛制测试赛 C:序列

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37960603/article/details/82216062

题目传送门
数据随机,随便乱搞

代码:

#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
const int maxn=100000+100;

LL ans[maxn],sum[maxn];

int main(){

    int n,q;
    scanf("%d%d",&n,&q);
    for(int i=1;i<=n;i++) scanf("%lld",&ans[i]),sum[i]=sum[i-1]+ans[i];
    while(q--){

        int k;
        scanf("%d",&k);
        if(sum[n]%k || k>n || k<=0) printf("No\n");
        else{

            LL num=sum[n]/k;
            LL now=0;
            int i;
            for(i=1;i<=k;i++){

                LL val= *lower_bound(sum+1,sum+1+n,now+num);
                if(val!=now+num) break;
                now=now+num;
            }
            if(i<=k) printf("No\n");
            else printf("Yes\n");
        }
    }
}  

猜你喜欢

转载自blog.csdn.net/qq_37960603/article/details/82216062