网站服务器和空间的区别,正规的计算机培训机构,如何打开建设网站后台,南昌加盟网站建设Codeforces 724 C. Ray Tracing 题目来源 codeforces 题意#xff1a; 有一些传感器按输入坐标分布在图上#xff0c;有一道光从(0,0)沿45角出射#xff0c;遇到边按反射法则反射#xff0c;遇到角落结束。 问每一个点被经过的时间#xff0c;并按照输入顺序输出。题解 有一些传感器按输入坐标分布在图上有一道光从(0,0)沿45°角出射遇到边按反射法则反射遇到角落结束。 问每一个点被经过的时间并按照输入顺序输出。题解 图上的每一个点都可以按照一定的对应关系对应到 yx 直线上的点上去模拟一遍可过 或者按照大牛们的做法同余方程组(扩展欧几里得) 瓦日辣么久了才发现这里发的题解代码贴错了。。。MMP哦 代码 #includebits/stdc.h
using namespace std;
typedef long long ll;
const int maxn1e5100;
vectorint a[maxn*2],b[maxn*2];
ll ans[maxn];
pairint,int po[maxn];
const int dir[4][2]{1,1,1,-1,-1,-1,-1,1};int main()
{
#ifndef ONLINE_JUDGE//freopen(C.in,r,stdin);//freopen(C.out,w,stdout);
#endifint n,m,k;cin n m k;memset(ans,-1,sizeof(ans));for(int i0,x,y;ik;i){cin x y;po[i]make_pair(x,y);a[x-ymaxn].push_back(i);b[xy].push_back(i);}int x0,y0,id0;ll t0;while(1){if(id1){for(auto u:b[xy])if(!~ans[u])ans[u]tabs(po[u].first-x);b[xy].clear();}else{for(auto u:a[x-ymaxn])if(!~ans[u])ans[u]tabs(po[u].first-x);a[x-ymaxn].clear();}int udir[id][0];int vdir[id][1];int txu0?n-x:x;int tyv0?m-y:y;if(txty)break;if(txty){if(id1)(id1)3;else(id3)3;xtx*u;ytx*v;ttx;}else{if(id1)(id3)3;else(id1)3;xty*u;yty*v;tty;}}for(int i0;ik;i)cout ans[i]endl;return 0;
} 转载于:https://www.cnblogs.com/Combustible-ice/p/5942180.html