【文文殿下】【CF724C】Ray Tracing (中国剩余定理)
题解
我们考虑将棋盘扩大一倍,这样相当于取膜。然后,我们只要对x,y,的位置分类讨论,做四次crt就行。具体细节看文文代码。
#include<cstdio>
#include<algorithm>
typedef long long ll;
const ll inf = 1000000000000LL;
int a[10],m[10];
inline ll exgcd(ll a,ll b,ll &x,ll &y) {
	if(b==0) {
		x=1;y=0;
		return a;
	}
	ll d = exgcd(b,a%b,x,y);
	ll tmp = x;
	x=y;
	y=tmp-a/b*y;
	return d;
}
inline ll China() {
	ll A=a[1],M=m[1],k,y;
	for(int i = 2;i<=2;++i) {
		ll d = exgcd(M,m[i],k,y),mod=(m[i]/d),c=a[i]-A;
		if(c%d) return inf;
		k=(k*c/d%mod+mod)%mod;
		A+=k*M;M*=m[i]/d;A=(A+M)%M;
	}
	return A;
}
inline ll solve(ll x,ll y) {
	a[1]=x;
	a[2]=y;
	return China();
}
int aa,bb,k;
int main() {
	//freopen("test.in","r",stdin);
	scanf("%d%d%d",&aa,&bb,&k);
	while(k--) {
		m[1]=2*aa;
		m[2]=2*bb;
		int x,y;
		scanf("%d%d",&x,&y);
		ll ans = inf;
		ans=std::min(ans,solve(x,y));
		ans=std::min(ans,solve(x,m[2]-y));
		ans=std::min(ans,solve(m[1]-x,y));
		ans=std::min(ans,solve(m[1]-x,m[2]-y));
		if(ans==inf) puts("-1");
		else printf("%lld\n",ans);
	}
	return 0;
}
												
											【文文殿下】【CF724C】Ray Tracing (中国剩余定理)的更多相关文章
- CF724C Ray Tracing 扩展欧几里得 平面展开
		
LINK:Ray Tracing 虚这道题很久了 模拟赛考了一个加强版的 瞬间就想到了这道简化版的. 考虑做法 暴力模拟可能可以 官方正解好像就是这个. 不过遇到这种平面问题可以考虑把平面给无限的展开 ...
 - CF724C: Ray Tracing
		
传送门 CF的题质量真心不低,这道题的标准解法(应该)是exgcd,打比赛的时候想到了具体的推导公式了,也意识到了需要用exgcd,但是因为寝室要锁门了(其实就是太弱,就放弃了. 首先很显然,这条线所 ...
 - ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)
		
二进制枚举+容斥原理+中国剩余定理 #include<iostream> #include<cstring> #include<cstdio> #include&l ...
 - 中国剩余定理(Chinese Remainder Theorem)
		
我理解的中国剩余定理的含义是:给定一个数除以一系列互素的数${p_1}, \cdots ,{p_n}$的余数,那么这个数除以这组素数之积($N = {p_1} \times \cdots \tim ...
 - 51nod1079(中国剩余定理)
		
题目链接: http://www.51nod.com/onlineJudge/user.html#!userId=21687 题意: 中文题诶~ 思路: 本题就是个中国剩余定理模板题,不过模拟也可以过 ...
 - HDU 5446 中国剩余定理+lucas
		
Unknown Treasure Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
 - OpenCascade Ray Tracing Rendering
		
OpenCascade Ray Tracing Rendering eryar@163.com 摘要Abstract:OpenCascade6.7.0中引入了光线跟踪算法的实现.使用光线跟踪算法可实现 ...
 - poj1006生理周期(中国剩余定理)
		
/* 中国剩余定理可以描述为: 若某数x分别被d1..….dn除得的余数为r1.r2.….rn,则可表示为下式: x=R1r1+R2r2+…+Rnrn+RD 其中R1是d2.d3.….dn的公倍数,而 ...
 - poj 1006:Biorhythms(水题,经典题,中国剩余定理)
		
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 110991 Accepted: 34541 Des ...
 
随机推荐
- mvc EF 从数据库更新实体,添加视图实体时添加不上的问题
			
视图对象没有一列为非null的,解决办法,在视图中,将某一列排除为null的可能,比如:isnull(te,1),即可.
 - vim之quickfix
			
[vim之quickfix] quickfix功能将编译过程中产生的错误信息保存到文件中,然后vim利用这些信息跳转到源文件的对应位置,我们就可以进行错误的修正,之后跳到下一个错误重复上述操作,从而极 ...
 - PAT 1052 卖个萌 (20)(代码+思路)
			
1052 卖个萌 (20)(20 分) 萌萌哒表情符号通常由"手"."眼"."口"三个主要部分组成.简单起见,我们假设一个表情符号是按下列格 ...
 - Bug:src/lxml/lxml.etree.c:84:20: 致命错误:Python.h:没有那个文件或目录
			
问题描述: pip批量安装软件包时,出现如上题目错误,卡在了lxm依赖于python中的python-devel 问题原因: 缺失python-devel开发包所导致,python.h存在于pytho ...
 - IE8以下支持css3 border-radius渲染方法
			
这两天在做个集团网站,web前端妹子技术水平不咋样,写个web和wap 真够费劲的,对之前流行的H5和css3 响应式看来不太会用,扔给我一个半成品~~·非说各种canvas和border-radiu ...
 - 导出jar文件
			
当我们编好一段代码时,就需要将其导出成应用程序,即jar文件(jar文件就是在Java运行环境下运行的应用程序).今天,巩固就教大家用eclipse导出jar文件. 第一步:找到eclipse,双击打 ...
 - 第三章 形容词(Les adjectifs)
			
★形容词的性(Le genre de l'adjectif ) ()一般规则是在阳性形容词后加-e: français ➞francaise法国的 content ➞c ...
 - json、JSONObject、JSONArray的应用
			
type.java package jiekou.duixiang; import java.text.ParseException;import java.text.SimpleDateFormat ...
 - Linux服务器部署系列之五—Webmin篇
			
对于很多习惯使用windows的用户,在刚接触Linux的时候,要使用命令行配置Linux服务器可能会感觉难以适应.今天我们来讲解一下,Linux下的图形配置工具—Webmin,通过这款工具,用户可以 ...
 - BSD Socket (java)
			
服务器 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java ...