2299: [HAOI2011]向量

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 1255  Solved: 575

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  (-2*109<=a,b,x,y<=2*109)

Output

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

Sample Input

3

2 1 3 3

1 1 0 1

1 0 -2 3

Sample Output

Y

N

Y

HINT

样例解释:

第一组:(2,1)+(1,2)=(3,3)

第三组:(-1,0)+(-1,0)+(0,1)+(0,1)+(0,1)=(-2,3)

Source

【分析】

  目测是随便mod一下判断一下就好了的。

  看代码吧。。

  就是可以用4个向量表示完全部(2a,0)(2b,0)(a,b)(b,a)

  看出来横纵坐标是可以mod gcd(2a,2b)的。

  然后直接判断最后是不是(0,0)或者(a,b)或者(b,a)或者(a+b,a+b)什么鬼的?

  【对了乘了2记得LL

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define LL long long LL myabs(LL x) {return x>?x:-x;} LL gcd(LL a,LL b)
{
if(b==) return a;
return gcd(b,a%b);
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
LL a,b,x,y;
scanf("%lld%lld%lld%lld",&a,&b,&x,&y);
a=myabs(a);b=myabs(b);
if(a==&&b==)
{
if(x==&&y==) printf("Y\n");
else printf("N\n");
}
else if(a==||b==)
{
if(a==&&(x%b+b)%b==&&(y%b+b)%b==) printf("Y\n");
else if(b==&&(x%a+a)%a==&&(y%a+a)%a==) printf("Y\n");
else printf("N\n");
}
else
{
LL g=gcd(a,b)*;
x=(x%g+g)%g;
y=(y%g+g)%g;
if(x==&&y==) printf("Y\n");
else if(x==a%g&&y==b%g) printf("Y\n");
else if(x==b%g&&y==a%g) printf("Y\n");
else if(x==(a+b)%g&&y==(a+b)%g) printf("Y\n");
else printf("N\n"); }
}
return ;
}

2017-04-05 11:45:22


顺便放一下查到的裴蜀定理

也就是exgcd里面那个东西嘛。。没什么特别的。。

【BZOJ 2299】 2299: [HAOI2011]向量 (乱搞)的更多相关文章

  1. 【BZOJ】2456 mode(乱搞)

    Description 给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数. Input 第1行一个正整数n.第2行n个正整数用空格隔开. Output 一行一个正整数表 ...

  2. bzoj 4900 [CTSC2017]密钥 模拟+乱搞

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4900 #include<cstring> #include<cmath&g ...

  3. BZOJ 4032 trie树+各种乱搞

    思路 : 先对b 的所有后缀建立trie树 第一问 暴力枚举a串的起点 在trie树上跑 找到最短的 第二问 也是暴力枚举a串的起点 a和b顺着暴力匹配就好 第三问 求出来a在第i个位置 加一个字母j ...

  4. 2016 10 27 考试 dp 向量 乱搞

    目录 20161027考试 T1: T2: T3: 20161027考试 考试时间 7:50 AM to 11:15 AM 题目 考试包 据说这是一套比较正常的考卷,,,嗯,,或许吧, 而且,,整个小 ...

  5. [BZOJ 2299][HAOI 2011]向量 题解(裴蜀定理)

    [BZOJ 2299][HAOI 2011]向量 Description 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), ...

  6. BZOJ1278: 向量vector(计算几何 随机化乱搞)

    题意 题目链接 Sol 讲一下我的乱搞做法.... 首先我们可以按极角排序.然后对\(y\)轴上方/下方的加起来分别求模长取个最大值.. 这样一次是\(O(n)\)的. 我们可以对所有向量每次随机化旋 ...

  7. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

  8. BZOJ 1011--[HNOI2008]遥远的行星(乱搞)

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 5684  Solved ...

  9. 【BZOJ 4148】 4148: [AMPPZ2014]Pillars (乱搞)

    4148: [AMPPZ2014]Pillars Time Limit: 5 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 100  Solve ...

随机推荐

  1. ASP.NET导入EXCEL方法汇总

    1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) { HttpResponse resp; ...

  2. UIDynamicBehavior的行为类翻译

    CHENYILONG Blog UIDynamicBehavior的行为类翻译 © chenyilong. Powered by Postach.io Blog

  3. json格式的一些常用操作方法

    package com.liveyc.restfull.until; import java.util.HashMap; import java.util.Iterator; import java. ...

  4. Travelling(HDU3001+状压dp+三进制+最短路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 题目: 题意:n个城市,m条边,每条边都有一个权值,问你经过所有的城市且每条边通过次数不超过两次 ...

  5. 利用Addon Domain和A记录使两个域名同时指向同一个网站

    今天碰到这样的需求:已有网站A.com, 以及新注册的域名B.net, 现需要将B.net指向与A.com相同的内容. 这里提出的方法是在空间后台添加Addon domain, 以及在域名B.net后 ...

  6. 简单响应式Bootstrap框架中文官网页面模板

    链接:http://pan.baidu.com/s/1o7MQ6RC 密码:kee5

  7. 深入理解Spring系列之三:BeanFactory解析

    转载 https://mp.weixin.qq.com/s?__biz=MzI0NjUxNTY5Nw==&mid=2247483824&idx=1&sn=9b7c2603093 ...

  8. 关于[神州数码信息安全DCN杯/信息安全管理与评估]的一些经验之谈

    前阵子参加了神州数码的比赛,赛后有如下经验分享,给还没参加过的朋友分享一下心德以及要注意的坑. 先科普一下这个比赛的三个阶段: 第一阶段主要是考网络部分的,例如搭建wifi以及防火墙诸如此类的设备. ...

  9. Mysql存储之原生语句操作(pymysql)

    Mysql存储之原生语句操作(pymysql) 关系型数据库是基于关系模型的数据库,而关系模型是通过二维表时实现的,于是构成了行列的表结构. 表可以看作是某个实体的集合,而实体之间存在联系,这个就需要 ...

  10. MYSQL-----IFNULL()函数的用法

    Mysql查询中可以使用IFNULL()函数,IFNULL函数中有两个参数,它的作用是测试如果ifnull第一个参数不为null,就会显示出查询的结果,如果第一个参数为null,则会返回第二个参数的字 ...