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同理。
我们只要求出解的通项然后随便带两个本质不同的进去就行了。当然多一点也不会超时。
代码:
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<string>
#define inf 1000000000
#define maxn 200000+5
#define maxm 200000+5
#define eps 1e-10
#define ll long long
#define pa pair<int,int>
#define for0(i,n) for(int i=0;i<=(n);i++)
#define for1(i,n) for(int i=1;i<=(n);i++)
#define for2(i,x,y) for(int i=(x);i<=(y);i++)
#define for3(i,x,y) for(int i=(x);i>=(y);i--)
#define for4(i,x) for(int i=head[x],y=e[i].go;i;i=e[i].next,y=e[i].go)
#define for5(n,m) for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)
#define mod 1000000007
#define mid ((l+r)>>1)
#define lch k<<1,l,mid
#define rch k<<1|1,mid+1,r
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();}
return x*f;
}
inline void exgcd(ll a,ll b,ll &x,ll &y)
{
if(!b){x=;y=;return;}
exgcd(b,a%b,x,y);
ll t=x;x=y;y=t-a/b*y;
}
inline ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}
inline bool check(ll x1,ll x2,ll x3,ll x4){return ((x1&)==(x4&))&&((x2&)==(x3&));}
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int T=read();
while(T--)
{
ll a=abs(read()),b=abs(read()),x=read(),y=read(),t=gcd(a,b),x1,x2,x3,x4,c,d;bool flag=;
if(a<b)swap(a,b);
if(!a&&!b){if(!x&&!y)flag=;else flag=;}
else if(x%t||y%t)flag=;
else
{
exgcd(a,b,c,d);
a/=t;b/=t;
x1=c*(x/t);x2=d*(x/t);
x3=c*(y/t);x4=d*(y/t);
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=;
else flag=;
}
puts(flag?"N":"Y");
}
return ;
}
BZOJ2299: [HAOI2011]向量的更多相关文章
- BZOJ2299 [HAOI2011]向量 【裴蜀定理】
题目链接 BZOJ2299 题解 题意就是给我们四个方向的向量\((a,b),(b,a),(-a,b),(b,-a)\),求能否凑出\((x,y)\) 显然我们就可以得到一对四元方程组,用裴蜀定理判断 ...
- BZOJ2299 HAOI2011向量(数论)
设最后的组成为x=x0a+x1b,y=y0a+y1b.那么容易发现x0和y0奇偶性相同.x1和y1奇偶性相同.于是考虑奇偶两种情况,问题就变为是否存在x和y使ax+by=c,那么其充要条件是gcd(a ...
- 【BZOJ2299】[HAOI2011]向量(数论)
[BZOJ2299][HAOI2011]向量(数论) 题面 BZOJ 洛谷 题解 首先如果我们的向量的系数假装可以是负数,那么不难发现真正有用的向量只有\(4\)个,我们把它列出来.\((a,b)(a ...
- 【BZOJ-2299】向量 裴蜀定理 + 最大公约数
2299: [HAOI2011]向量 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1118 Solved: 488[Submit][Status] ...
- 【BZOJ 2299】 2299: [HAOI2011]向量 (乱搞)
2299: [HAOI2011]向量 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1255 Solved: 575 Description 给你一 ...
- P2520 [HAOI2011]向量
题目描述 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量 ...
- [HAOI2011]向量
题目描述 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量 ...
- 【[HAOI2011]向量】
靠瞎猜的数学题 首先我们先对这些向量进行一顿组合,会发现\((a,b)(a,-b)\)可以组合成\((2a,0)\),\((b,-a)(b,a)\)可以组合成\((2b,0)\),同理\((0,2a) ...
- 牛客19985 HAOI2011向量(裴属定理,gcd)
https://ac.nowcoder.com/acm/problem/19985 看到标签“裴属定理”就来做下,很眼熟,好像小学奥数学过.. 题意:给你a,b,x,y,你可以任意使用(a,b), ( ...
随机推荐
- ubuntu下格式化内存当硬盘使的小实验
内存虚拟硬盘(ramdisk)是指通过软件技术,将物理内存进行分割,将一部分内存通过虚拟技术转变为硬盘以较大幅度提升计算机数据读取速度和保护硬盘. 在ubuntu下的dev下有ram相关的文件,这些文 ...
- Jquery 固定悬浮层以及固定表头
/* =========================================================== * jquery.autofix_anything.js v1 * === ...
- 在云服务器搭建WordPress博客(五)创建和管理文章分类
不同主题的文章划分到不同的分类,有助于访客寻找他们想要的内容,提高用户体验.所以,为你的网站创建文章分类是很有必要的.那么,WordPress系统如何创建和管理文章分类呢?今天倡萌就简单介绍一下. 创 ...
- Problem 1016 咒文卷轴 优先队列+前缀和+rmq
题目链接: 题目 Problem 1016 咒文卷轴 Time Limit: 3000 mSec Memory Limit : 131072 KB 问题描述 小Y 是一个魔法师,有一天他获得了一卷神秘 ...
- Eclipse插件安装总结
Eclipse的插件安装分为在线安装和离线安装两类: 1.在线安装(新版本的推荐方式) 最常用和最好用的方式,直接使用Eclipse的Ecliplse Marketplace,搜索你需要的插件,然后点 ...
- Namespace, string, vector and array
1. Headers should not include using declaration Code inside headers ordinarily should not include us ...
- java基础知识回顾之---java String final类普通方法的应用之“子串在整串中出现的次数”
/* * 2 一个子串在整串中出现的次数. * "loveerlovetyloveuiloveoplove" * 思路: * 1,要找的子串是否存在,如果存在获取其出现的位置.这个 ...
- ios 关于StoryBoard 的简易使用说明
ios 关于StoryBoard 的简易使用说明 http://www.tuicool.com/articles/FNRruy
- http://my.oschina.net/u/1185331/blog/502350
http://my.oschina.net/u/1185331/blog/502350
- lintcode 中等题:搜索旋转排序数组II
题目 搜索旋转排序数组 II 跟进“搜索旋转排序数组”,假如有重复元素又将如何? 是否会影响运行时间复杂度? 如何影响? 为何会影响? 写出一个函数判断给定的目标值是否出现在数组中. 样例 给出[3, ...