zoukankan      html  css  js  c++  java
  • CF1477A Nezzar and Board

    大胆猜想,不要求证。

    发现 (2x-y=x+x-y),可以看做加上差。

    而题目又对数的范围没有要求,感性理解一下,通过加加减减消去多余的东西我们可以任意操作差的个数。

    根据裴蜀定理,只要 (gcd|k) 就可以构造,时间复杂度 (O(sum nlog n+sumlog x))

    code:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define For(i,x,y)for(i=x;i<=(y);i++)
    ll a[200005];
    ll read()
    {
    	ll A;
    	bool K;
    	char C;
    	C=A=K=0;
    	while(C<'0'||C>'9')K|=C=='-',C=getchar();
    	while(C>'/'&&C<':')A=(A<<3)+(A<<1)+(C^48),C=getchar();
    	return(K?-A:A);
    }
    ll gcd(ll _,ll __)
    {
    	return(!_?__:gcd(__%_,_));
    }
    int main()
    {
    	ll k,s;
    	int t,n,i;
    	t=read();
    	while(t--)
    	{
    		n=read(),k=read();
    		For(i,1,n)a[i]=read();
    		sort(a+1,a+n+1);
    		s=a[2]-a[1];
    		For(i,2,n-1)s=gcd(s,a[i+1]-a[i]);
    		For(i,1,n)
    		if(!((a[i]-k)%s))break;
    		puts((i>n?"NO":"YES"));
    	}
    	return 0;
    }
    
  • 相关阅读:
    bzoj1648:奶牛野餐
    bzoj1650:跳石子
    bzoj1643:贝西的秘密草坪
    bzoj1639:月度开支
    bzoj1636:Balanced Lineup
    bzoj1634:护花
    .
    bzoj1620:时间管理
    bzoj1611:流星雨
    bzoj1609:麻烦的聚餐
  • 原文地址:https://www.cnblogs.com/May-2nd/p/14361710.html
Copyright © 2011-2022 走看看