Codeforces 724 C. Ray Tracing

题目来源

  • codeforces

    题意:

    有一些传感器按输入坐标分布在图上,有一道光从(0,0)沿45°角出射,遇到边按反射法则反射,遇到角落结束。
    问每一个点被经过的时间,并按照输入顺序输出。

题解:

图上的每一个点都可以按照一定的对应关系对应到 y=x 直线上的点上去,模拟一遍可过
或者按照大牛们的做法,同余方程组(扩展欧几里得)

瓦日,辣么久了才发现这里发的题解代码贴错了。。。MMP哦

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+100;
vector<int> a[maxn*2],b[maxn*2];
ll ans[maxn];
pair<int,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 i=0,x,y;i<k;i++){cin >> x >> y;po[i]=make_pair(x,y);a[x-y+maxn].push_back(i);b[x+y].push_back(i);}int x=0,y=0,id=0;ll t=0;while(1){if(id&1){for(auto u:b[x+y])if(!~ans[u])ans[u]=t+abs(po[u].first-x);b[x+y].clear();}else{for(auto u:a[x-y+maxn])if(!~ans[u])ans[u]=t+abs(po[u].first-x);a[x-y+maxn].clear();}int u=dir[id][0];int v=dir[id][1];int tx=u>0?n-x:x;int ty=v>0?m-y:y;if(tx==ty)break;if(tx<ty){if(id&1)(id+=1)&=3;else(id+=3)&=3;x+=tx*u;y+=tx*v;t+=tx;}else{if(id&1)(id+=3)&=3;else(id+=1)&=3;x+=ty*u;y+=ty*v;t+=ty;}}for(int i=0;i<k;i++)cout << ans[i]<<endl;return 0;
}

转载于:https://www.cnblogs.com/Combustible-ice/p/5942180.html

Codeforces 724 C. Ray Tracing相关推荐

  1. Ray Tracing,Ray Casting,Path Tracing,Ray Marching 的区别?

    作者:洛城 链接:https://www.zhihu.com/question/29863225/answer/70728387 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  2. 《Ray Tracing in One Weekend》、《Ray Tracing from the Ground Up》读后感以及光线追踪学习推荐...

    <Ray Tracing in One Weekend> 优点: 相对简单易懂 渲染效果相当好 代码简短,只看书上的代码就可以写出完整的程序,而且Github上的代码是将基类与之类写在一起 ...

  3. 【Ray Tracing The Next Week 超详解】 光线追踪2-6 Cornell box

    Chapter 6:Rectangles and Lights 今天,我们来学习长方形区域光照  先看效果 light 首先我们需要设计一个发光的材质 /// light.hpp// -------- ...

  4. 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-5 random direction ONB

     Preface 往后看了几章,对这本书有了新的理解 上一篇,我们第一次尝试把MC积分运用到了Lambertian材质中,当然,第一次尝试是失败的,作者发现它的渲染效果和现实有些出入,所以结尾处声明要 ...

  5. A Hands-on Look at Using Ray Tracing in Games with UE 4.22 GDC 2019

    A Hands-on Look at Using Ray Tracing in Games with UE 4.22 GDC 2019 talker: Sjoerd De Jong (SR.ENGIN ...

  6. 【Ray Tracing The Next Week 超详解】 光线追踪2-4 Perlin noise

     Preface 为了得到更好的纹理,很多人采用各种形式的柏林噪声(该命名来自于发明人 Ken Perlin) 柏林噪声是一种比较模糊的白噪声的东西:(引用书中一张图) 柏林噪声是用来生成一些看似杂乱 ...

  7. 《 Ray Tracing from the Ground Up》官方代码的潜在的纹理映射问题

    最近,小编在< Ray Tracing from the Ground Up>的基础上尝试实现BART的动画.写过一篇博文来总结初期实现的结果: "在< Ray Traci ...

  8. 【长文】在《 Ray Tracing from the Ground Up》的基础上实现BART的动画

    第一部分:前言 本文是介绍在<Ray Tracing from the Ground Up>的那套代码的基础上怎么做出和BART官网上提供的视频差不多的动画. 大概一年前,小编写过一篇汇总 ...

  9. 总结《Ray Tracing from the Ground Up》

    之前已经学习过<Ray Tracing in One Weekend>和<An Introduction to Ray Tracing>的一些内容,相关总结文档链接如下: 总结 ...

最新文章

  1. 面试官:关于Spring就问这13个
  2. oracle linux telnet,linux如何开启telnet服务
  3. Jenkins 使用 Kubernetes Plugin 完成持续构建与发布
  4. 解决ScrollView与ViewPage滑动冲突的问题
  5. flask 开发接口测试平台
  6. java web mvc_构建Java Web应用程序时遵循MVC的三个步骤
  7. [Leetcode][第214题][JAVA][最短回文串][KMP][RK]
  8. 获取场景中指定类的实例
  9. 【Java】《基于Java的面向对象范式》学习笔记分享
  10. kindeditor图片上传
  11. android fragment 教程,Android Fragment教程总结
  12. npm 可视化html编辑器,超给力 Vue.js 可视化H5拖拽编辑器Quark-H5
  13. react-navigation StackNavigator 快速点击会多次跳转页面
  14. python 下载文件-python实现下载文件的三种方法_python
  15. 2.C++深入理解 面向对象部分1
  16. iOS cocoapods的使用规范说明及示例(.podspec配置文件)
  17. Pytorch模型量化介绍
  18. 现金支票打印模板excel_WPS里面如何批量打印(WPS2019)
  19. Tensorflow函数测试之tf.contrib.layers.embed_sequence
  20. 使用OpenSER构建电话通信系统——第一章(2)

热门文章

  1. keras的学习笔记
  2. 30几岁该有多少存款才算合格?
  3. 电子设计从零开始 第一章总结
  4. MATLAB绘制正弦波、方波、三角波、锯齿波的mif文件
  5. alchemy php,Flask SQLAlchemy
  6. 开关电源环路的零极点可以在反馈端补偿吗_【干货分享】开关电源环路补偿设计步骤讲解...
  7. 停车场管理系统代码_jsp19109商场商铺停车场服务系统-SSM-Mysql
  8. linux 神的编辑器,编辑器之神-vim的使用,编辑器神-vim
  9. 岗位理解_当面试官问求职者对应聘岗位的理解情况
  10. 我的世界java版和基岩版对比_我的世界:基岩版比Java多出的七个特性,都听过的非老mc莫属了!...