[BZOJ 2299][HAOI 2011]向量

Description

给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量(x,y)。

说明:这里的拼就是使得你选出的向量之和为(x,y)

Input

第一行数组组数t,(t<=50000)

接下来t行每行四个整数a,b,x,y (-2109<=a,b,x,y<=2109)

Output

t行每行为Y或者为N,分别表示可以拼出来,不能拼出来

Solution

1.考虑把八种情况合在一起,发现反向操作可以合并,那么操作也就是有四种(a,b),(-a,b),(b,a),(-b,a);

2.设四种操作进行的次数分别为x1,x2,x3,x4,那么:

对横坐标的操作为x1a-x2a+x3b-x4b,即(x1-x2)a+(x3-x4) b=x;

对纵坐标的操作为x1b+x2b+x3a+x4a,即(x1+x2)b+(x3+x4)a=y;

于是我们验证两方程是否有整数解即可。

3.裴蜀定理告诉我们:当gcd(a,b)|ans时,方程有整数解。

考虑四个系数的奇偶性,因为四个系数是四个数的组合,所以gcd应该是原来的二倍。

比如当x1-x2是奇数时,假设可行解中系数x1+x2为偶数,那就不成立了,所以我们分情况讨论之后发现,满足要求时gcd应该为原来的二倍。

Code

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
typedef long long ll;
using namespace std; ll g; inline ll rd(){
ll x=0;
bool f=0;
char c=getchar();
while(!isdigit(c)){
if(c=='-')f=1;
c=getchar();
}
while(isdigit(c)){
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
return f?-x:x;
} ll gcd(ll x,ll y){return y?gcd(y,x%y):x;} bool valid(ll x,ll y){return (!(x%g))&&(!(y%g));} int main(){
ll t=rd();
while(t--){
ll a=rd(),b=rd();
ll x=rd(),y=rd();
g=gcd(a,b)<<1;
printf((valid(x,y)||valid(x+a,y+b)||valid(x+b,y+a)||valid(x+a+b,y+a+b))?"Y\n":"N\n");
}
return 0;
}

[BZOJ 2299][HAOI 2011]向量 题解(裴蜀定理)的更多相关文章

  1. BZOJ2299 [HAOI2011]向量 【裴蜀定理】

    题目链接 BZOJ2299 题解 题意就是给我们四个方向的向量\((a,b),(b,a),(-a,b),(b,-a)\),求能否凑出\((x,y)\) 显然我们就可以得到一对四元方程组,用裴蜀定理判断 ...

  2. BZOJ 2257: [Jsoi2009]瓶子和燃料 裴蜀定理

    2257: [Jsoi2009]瓶子和燃料 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...

  3. BZOJ 2299 向量(裴蜀定理)

    题意:给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量(x ...

  4. 【BZOJ-2299】向量 裴蜀定理 + 最大公约数

    2299: [HAOI2011]向量 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1118  Solved: 488[Submit][Status] ...

  5. bzoj 1441: Min 裴蜀定理

    题目: 给出\(n\)个数\((A_1, ... ,A_n)\)现求一组整数序列\((X_1, ... X_n)\)使得\(S=A_1*X_1+ ...+ A_n*X_n > 0\),且\(S\ ...

  6. [BZOJ 2301] [HAOI 2011] Problem b (莫比乌斯反演)(有证明)

    [BZOJ 2301] [HAOI 2011] Problem b (莫比乌斯反演)(有证明) 题面 T组询问,每次给出a,b,c,d,k,求\(\sum _{i=a}^b\sum _{j=c}^d[ ...

  7. [HAOI2011] 向量 - 裴蜀定理

    给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量(x,y) ...

  8. 【BZOJ】1441: Min(裴蜀定理)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1441 这东西竟然还有个名词叫裴蜀定理................ 裸题不说....<初等数 ...

  9. BZOJ 2257: [Jsoi2009]瓶子和燃料【数论:裴蜀定理】

    2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1326  Solved: 815[Submit][Stat ...

随机推荐

  1. python 游戏(船只寻宝)

    1. 游戏思路和流程图 实现功能:船只在可以在大海上移动打捞宝藏,船只可以扫描1格范围内的宝藏(后续难度,可以调整扫描范围,可以调整前进的格数) 游戏流程图 2. 使用模块和游戏提示 import r ...

  2. 【Alpha】第二次Scrum meeting

    本次会议内容概括如下: 总结了今天各成员分配任务完成情况,对消耗时间进行统计 评估了各自对团队的贡献(影响)程度 初步讨论了日后需要逐步完成的一些任务并发布在github上 具体内容如下表所示: Me ...

  3. 20170929php

    这是之前学习PHP类使用的代码 <?phpclass animal{ var $name="1"; var $sex="2"; public static ...

  4. 重温servlet②

    重定向:我给服务器请求一条消息,服务器让我访问另外一个服务器(新的地址).302状态码,并设置location头,完成重定向.两个请求. package com.pcx.servlets;   imp ...

  5. week6:个人博客作业

    这周主要是参与团队编程的讨论 团队编程中发现很多问题: 1,每个人共同空闲的时间不好找 就我组来说,我是考研,每天晚上都要去外面上课,有的人在进行大创,,也有的像我一样在整考研的东西,还有的进行其他, ...

  6. Ubuntu安装eclipse,并创建桌面快捷方式

    系统:Ubuntu 16.04 JDK版本:1.8.0_121 Ubuntu下安装JDK配置环境变量可见我的这篇文章   http://www.cnblogs.com/AloneZ/p/Ubuntu1 ...

  7. vm15安装esxi6.0

    vmware 15安装esxi6.0时发现出现没有硬盘选择,导致无法安装 在vm12上安装正常 经过测试 1.需要在虚拟机硬件兼容性上选择12.x 2.版本也要选6.0,不要选6.X 其次,esxi要 ...

  8. shit aliyun

    shit aliyun 垃圾的 aliyun 什么鬼逻辑,怎么填写都不对,holy shit! 校验规则: // 对不起,昵称包含不可接受字符或被管理员屏蔽,请选择其它昵称 // 昵称的长度必须大于等 ...

  9. nginx提示Job for nginx.service failed because the control的问题

    启动nginx时就报错!Job for nginx.service failed because the control process exited with error code. See &qu ...

  10. 一本通1656Combination

    1656:Combination 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 原题来自:BZOJ 2982 LMZ 有 n 个不同的基友,他每天晚上要选  ...