• BZOJ2299: [HAOI2011]向量


    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2299

    题解:乱搞就可以了。。。

    不妨认为有用的只有(a,b)(a,-b)(b,a)(b,-a)

    然后设他们的系数分别为x1,x2,x3,x4,则有

    (x1+x2)*a+(x3+x4)*b=x

    (x1-x2)*b+(x3-x4)*a=y

    方程ax+by=c有解的充要条件是c|gcd(a,b)

    但这样并不能保证方程组有解,所以还要满足一个条件就是x1+x2与x1-x2同奇偶,34同理。

    我们只要求出解的通项然后随便带两个本质不同的进去就行了。当然多一点也不会超时。

    代码:

      1 #include<cstdio>
      2 
      3 #include<cstdlib>
      4 
      5 #include<cmath>
      6 
      7 #include<cstring>
      8 
      9 #include<algorithm>
     10 
     11 #include<iostream>
     12 
     13 #include<vector>
     14 
     15 #include<map>
     16 
     17 #include<set>
     18 
     19 #include<queue>
     20 
     21 #include<string>
     22 
     23 #define inf 1000000000
     24 
     25 #define maxn 200000+5
     26 
     27 #define maxm 200000+5
     28 
     29 #define eps 1e-10
     30 
     31 #define ll long long
     32 
     33 #define pa pair<int,int>
     34 
     35 #define for0(i,n) for(int i=0;i<=(n);i++)
     36 
     37 #define for1(i,n) for(int i=1;i<=(n);i++)
     38 
     39 #define for2(i,x,y) for(int i=(x);i<=(y);i++)
     40 
     41 #define for3(i,x,y) for(int i=(x);i>=(y);i--)
     42 
     43 #define for4(i,x) for(int i=head[x],y=e[i].go;i;i=e[i].next,y=e[i].go)
     44 
     45 #define for5(n,m) for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)
     46 
     47 #define mod 1000000007
     48 
     49 #define mid ((l+r)>>1)
     50 
     51 #define lch k<<1,l,mid
     52 
     53 #define rch k<<1|1,mid+1,r
     54 
     55 using namespace std;
     56 
     57 inline int read()
     58 
     59 {
     60 
     61     int x=0,f=1;char ch=getchar();
     62 
     63     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
     64 
     65     while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();}
     66 
     67     return x*f;
     68 
     69 }
     70 inline void exgcd(ll a,ll b,ll &x,ll &y)
     71 {
     72     if(!b){x=1;y=0;return;}
     73     exgcd(b,a%b,x,y);
     74     ll t=x;x=y;y=t-a/b*y;
     75 }
     76 inline ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}
     77 inline bool check(ll x1,ll x2,ll x3,ll x4){return ((x1&1)==(x4&1))&&((x2&1)==(x3&1));}
     78 
     79 int main()
     80 
     81 {
     82 
     83     freopen("input.txt","r",stdin);
     84 
     85     freopen("output.txt","w",stdout);
     86 
     87     int T=read();
     88     while(T--)
     89     {
     90         ll a=abs(read()),b=abs(read()),x=read(),y=read(),t=gcd(a,b),x1,x2,x3,x4,c,d;bool flag=0;
     91         if(a<b)swap(a,b);
     92         if(!a&&!b){if(!x&&!y)flag=0;else flag=1;}
     93         else if(x%t||y%t)flag=1;
     94         else 
     95         {
     96             exgcd(a,b,c,d);
     97             a/=t;b/=t;
     98             x1=c*(x/t);x2=d*(x/t);
     99             x3=c*(y/t);x4=d*(y/t);
    100             if(check(x1,x2,x3,x4)||check(x1+b,x2-a,x3,x4)||check(x1,x2,x3+b,x4-a)||check(x1+b,x2-a,x3+b,x4-a))flag=0;
    101             else flag=1;
    102         }
    103         puts(flag?"N":"Y");
    104     }
    105 
    106     return 0;
    107 
    108 }  
    View Code
  • 相关阅读:
    flex 布局
    5个有用的 CSS 布局生成器
    js 函数
    js 类定义的方法(最终)
    js && ||
    css position 盒子模型
    eldatepicker选择时间,限定选择的时间段
    Java基础学习总结——Java对象的序列化和反序列化
    pytorch自定义算子
    网站上视频下载后保存为MP4格式
  • 原文地址:https://www.cnblogs.com/zyfzyf/p/4261799.html
Copyright © 2020-2023  润新知