【BZOJ 2299】 2299: [HAOI2011]向量 (乱搞)

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

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<iostream>
 5 #include<algorithm>
 6 using namespace std;
 7 #define LL long long
 8
 9 LL myabs(LL x) {return x>0?x:-x;}
10
11 LL gcd(LL a,LL b)
12 {
13     if(b==0) return a;
14     return gcd(b,a%b);
15 }
16
17 int main()
18 {
19     int T;
20     scanf("%d",&T);
21     while(T--)
22     {
23         LL a,b,x,y;
24         scanf("%lld%lld%lld%lld",&a,&b,&x,&y);
25         a=myabs(a);b=myabs(b);
26         if(a==0&&b==0)
27         {
28             if(x==0&&y==0) printf("Y\n");
29             else printf("N\n");
30         }
31         else if(a==0||b==0)
32         {
33             if(a==0&&(x%b+b)%b==0&&(y%b+b)%b==0) printf("Y\n");
34             else if(b==0&&(x%a+a)%a==0&&(y%a+a)%a==0) printf("Y\n");
35             else printf("N\n");
36         }
37         else
38         {
39             LL g=gcd(a,b)*2;
40             x=(x%g+g)%g;
41             y=(y%g+g)%g;
42             if(x==0&&y==0) printf("Y\n");
43             else if(x==a%g&&y==b%g) printf("Y\n");
44             else if(x==b%g&&y==a%g) printf("Y\n");
45             else if(x==(a+b)%g&&y==(a+b)%g) printf("Y\n");
46             else printf("N\n");
47
48         }
49     }
50     return 0;
51 }

2017-04-05 11:45:22



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

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

时间: 2024-10-07 08:48:17

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

BZOJ 4032 trie树+各种乱搞

思路 : 先对b 的所有后缀建立trie树 第一问 暴力枚举a串的起点 在trie树上跑 找到最短的 第二问 也是暴力枚举a串的起点 a和b顺着暴力匹配就好 第三问 求出来a在第i个位置 加一个字母j 能够到的最近的位置 f[i][j] 到最后就是inf 从f[0][j]DFS 在trie上跟着跑找到最小的deep更新答案 第四问 先按照求f一样同理求出b串 的  g dp[i][j]表示a的前i个位置 b不得不匹配到b的第j个位置             dp[i+1][j]=min(dp[i

BZOJ 1811 IOI 2005 mea 乱搞

题目大意:给出一个序列中相邻两个的平均值,问有多少个序列可以满足这个性质. 思路:不难看出,只要确定了任意一个数字,整个序列就是确定的.我们设第一个值为k,那么后面的值都可以用表达式表示.然后做一下差分,保证每一项>0,就可以确定k的范围,每一个k值对应一个序列. CODE: #define _CRT_SECURE_NO_DEPRECATE #include <cmath> #include <cstdio> #include <cstring> #include

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

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4900 1 #include<cstring> 2 #include<cmath> 3 #include<iostream> 4 #include<algorithm> 5 #include<cstdio> 6 #include<vector> 7 8 #define N 40000007 9 #define FOR(a,b,c)

bzoj 2299 [HAOI2011]向量 裴蜀定理

bzoj 2299 [HAOI2011]向量 裴蜀定理 题意: 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量(x,y). 限制: -2*1e9 <= a,b,x,y <= 2*1e9 思路: 题目的操作可以化为: 1. x +- 2a; 2. y +- 2a; 3. x +- 2b; 4. y +- 2b; 5. x + a && y

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

[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

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

4148: [AMPPZ2014]Pillars Time Limit: 5 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 100  Solved: 49 Description 给定一个n*m的矩形,其中有f个2*2的障碍物,其中任意两个障碍物中心之间的欧几里得距离至少为6, 且每个障碍物的中心到边缘的距离至少为3.请找到一条从左下角(1,1)出发经过所有没有障碍物的点各 一次的且最后回到左下角的回路. Input 第一行包含三个整数n,

【乱搞】【HNOI 2008】【bzoj 1011】遥远的行星

1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec Memory Limit: 162 MBSec Special Judge Submit: 2640 Solved: 954 Description 直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用.请计算每颗行星的受力,只要结果的相对误差不超过5%即可.

裴蜀定理 BZOJ2299[HAOI2011] 向量

2299: [HAOI2011]向量 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1362  Solved: 632[Submit][Status][Discuss] Description 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量(x,y). 说明:这里的拼就是使得你选出的向量之和为(x,y)

【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞

3578: GTY的人类基因组计划2 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 367  Solved: 159[Submit][Status][Discuss] Description GTY召唤了n个人来做实验,GTY家的房子很大,有m个房间一开始所有人都在1号房间里,GTY会命令某人去某个房间等待做实验,或者命令一段区间的房间开始实验,实验会获得一些实验信息点数,点数为房间里的人数,如果一个房间里的一群人已经做过实验了那么这些人将不会增