2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】
Dying Light
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 513 Accepted Submission(s): 122

LsF
is visiting a local amusement park with his friends, and a mirror room
successfully attracts his attention. Inside the mirror room, there are n
plane mirrors standing vertically on the ground. They are placed
end-to-end and face-to-face so that if you overlook the room, you can
find a convex hull and the all the reflector surfaces are inside the
pattern. The height of the mirror is not important in this problem.
Due
to imperfect manufacturing techniques, mirrors can't reflect light
without lose of energy. Each mirror has a reflection efficiency k, which
means if the incident light's intensity is I, the reflected light's
intensity will be reduced to kI. The only exception could happen when
the light precisely goes to the two mirrors' junction. In that case, the
light will be completely absorbed instantly. Note the laws of
reflection of light applies in all other situations, that the angle of
incidence equals the angle of reflection.
Now LsF stands inside the
mirror hall, and shoots a laser beam paralleled to the ground using his
laser pointer. Unfortunately, his laser pointer can only shot laser
beams with intensity of 1. What's worse, a laser beam is considered
disappeared if its intensity is below 10−4. There's not much magnitude distance between the two numbers.
LsF wants to know how many touches can his laser beam make with mirrors before it disappears.
Then n lines follow. The ith line contains three real numbers xi,yi,ki(−109≤xi,yi≤109;0≤ki≤0.9), which means the ith mirror's one end is at position (xi,yi) and another end is at (xi+1mod n,yi+1mod n), and its reflectivity is ki.
Next there are two real numbers Vx,Vy(-109≤Vx,Vy≤109), indicating the initial direction vector of the laser beam.
LsF is standing at the origin (0, 0).
4
1 2 0.5
-1 0 0.5
1 -2 0.5
3 0 0.5
0 1
4
1 1 0.5
-1 1 0.5
-1 -1 0.5
1 -1 0.5
1 1
14
1
由于反射率<=0.9 0.9^100<1e-4,所以反射次数不会超过100次。
每次暴力判断和哪个镜子相交,以及有没有在镜子焦点上。
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <iostream> #define MAXN 5000
#define eps 1e-9 struct point
{
double x,y;
point(double a = ,double b = )
{
x = a; y = b;
}
friend point operator + (point a,point b)
{
return point(a.x+b.x,a.y+b.y);
}
friend point operator - (point a,point b)
{
return point(a.x-b.x,a.y-b.y);
}
friend double operator ^ (point a,point b)
{
return a.x*b.y-a.y*b.x;
}
friend double operator * (point a,point b)
{
return a.x*b.x+a.y*b.y;
}
friend point operator * (point a,double b)
{
return point(a.x*b,a.y*b);
}
friend point operator * (double a,point b)
{
return point(a*b.x,a*b.y);
} }; struct line
{
point s,e;
line(point a = point(,),point b = point(,))
{
s = a; e = b;
}
}; point p[MAXN+];
double c[MAXN+];
int n;
point s[]; int sgn(double x)
{
if (x>eps) return ;
if (x<-eps) return -;
return ;
} point Get_Intersect(line a,line b)
{
double u=(a.e-a.s)^(b.s-a.s);
double v=(a.s-a.e)^(b.e-a.e);
point p;
p.x=(b.s.x*v+b.e.x*u)/(v+u);
p.y=(b.s.y*v+b.e.y*u)/(v+u);
return p;
} int main()
{
// freopen("input.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{for (int i=;i<n;i++) scanf("%lf%lf%lf",&p[i].x,&p[i].y,&c[i]);
p[n] = p[];
s[] = point(,);
scanf("%lf%lf",&s[].x,&s[].y); double now = 1.0;
int ans = ;
bool flag = ;
point temp;
point temp2;
line l1,l2,l3,l4;
while (now > 1e-)
{
ans++;
for (int i=;i<n;i++)
{
if (!sgn((p[i]-s[])^s[]))
{
now = ;
flag = ;
break;
}
}
if (!flag) break;
for (int i=;i<n;i++)
{
if (sgn((p[i]-s[])^s[]) > && sgn(s[]^(p[i+]-s[]))>)
{
l1 = line(p[i+],p[i]);
l2 = line(s[],s[]+s[]);
temp = Get_Intersect(l1,l2); l3 = line(temp,point(p[i+].y-p[i].y,p[i].x-p[i+].x)+temp);
l4 = line(s[],point(p[i].x-p[i+].x,p[i].y-p[i+].y)+s[]); temp2 = Get_Intersect(l3,l4);
temp2 = *temp2-s[];
s[] = temp;
s[] = temp2-s[];
now *= c[i];
break;
}
}
}
printf("%d\n",ans);
}
return ;
}
2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】的更多相关文章
- 2017 Multi-University Training Contest - Team 1 1002&&hdu 6034
Balala Power! Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- 2017 Multi-University Training Contest - Team 9 1005&&HDU 6165 FFF at Valentine【强联通缩点+拓扑排序】
FFF at Valentine Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】
CSGO Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- 2017 Multi-University Training Contest - Team 9 1002&&HDU 6162 Ch’s gift【树链部分+线段树】
Ch’s gift Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- 2017 Multi-University Training Contest - Team 9 1001&&HDU 6161 Big binary tree【树形dp+hash】
Big binary tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- 2017 Multi-University Training Contest - Team 1 1003&&HDU 6035 Colorful Tree【树形dp】
Colorful Tree Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- 2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】
Function Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- 2017 Multi-University Training Contest - Team 1 1002&&HDU 6034 Balala Power!【字符串,贪心+排序】
Balala Power! Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】
KazaQ's Socks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
随机推荐
- Data Base mongodb高版本与低版本的区别
mongodb高版本与低版本的区别 一.mongodb引擎: Mongodb 3.0支持用户自定义存储引擎,用户可配置使用mmapv1或者wiredTiger存储引擎. 3.2版本以后默认的开启的是w ...
- VR、AR、MR定义区别
近日, 获得谷歌5亿美元融资的技术公司Magic Leap在WSJD展会中放出了一段实录视频,引起不小骚动.如今,也有媒体称他们为MR公司,那么VR.AR.MR之间到底有什么区别呢. VR.AR.MR ...
- iOS 数据储存--SQLite 操作数据库-FMDB,sqlite数据类型,保存图片,demo
1.SQLite 语句中 数据类型的储存 /* 不区分大小写 char(长度).字符串 NULL. 空值 INTEGER. 整型 REAL.浮点型 TEXT.文本类型 BLOB. 二进制类型,用来存储 ...
- ArcGIS Runtime SDK是什么?
如上图,Runtime SDK是什么东西?居然还有安卓.苹果手机.Mac.QT的版本? 是不是意味着ArcGIS的编辑数据和空间分析可以通过编程的方法在每个平台上满地跑了? 答案是:是,也不是. 1. ...
- 用HTML5和原生js实现放大局部图片
drawImage方法 context.drawImage(image,sx,sy,sh,dx,dy,dw,dh) sx\sy起始图像的横纵坐标,sh\sd起始图像的大小,dx\dy复制图像的横纵坐标 ...
- 常用API接口汇总
下面列举了100多个国内常用API接口,并按照 笔记.出行.词典.电商.地图.电影.即时通讯.开发者网站.快递查询.旅游.社交.视频.天气.团队协作.图片与图像处理.外卖.消息推送.音乐.云.语义识别 ...
- Q:javax.comm 2.0 windows下Eclipse的配置
@转自http://blog.csdn.net/zhuanghe_xing/article/details/7523744处 要在Windows下,对计算机的串口或并口等进行编程,可以选择使用Java ...
- ThinkPHP使用阿里云通信短信服务
一.下载SDK 目前给出的SDK版本有JAVA.PHP.Python三个版本,我们使用PHP版本 二.文档结构 将下载的PHP-SDK解压,放入tp框架的Library目录下 发送短信主要使用api_ ...
- MySQL 配置文件my.cnf
转载: MySQL配置文件my.cnf 详解:#BEGIN CONFIG INFO#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大#TYPE: SYSTEM ...
- python2中的__init__.py文件的作用
python2中的__init__.py文件的作用: 1.python的每个模块的包中,都必须有一个__init__.py文件,有了这个文件,我们才能导入这个目录下的module. 2.__init_ ...