UVALive 6835 Space Golf-计算几何
2015-12-08 16:33
363 查看
题目意思:是在一段长度为d的区域内有许多已知坐标pi和高度hi的障碍物。你要发射一个球经过若干次反弹(越过障碍物)到达终点。反弹次数有限不能超过b,不能正好落在障碍物上,每次碰撞都是理想碰撞,不消耗能量。问最小的出射速度。
解题思路:因为限制的反弹次数是有限的,所以枚举每一个反弹次数,然后求出每个区间长度len=d/(b+1);对于每个区间暴力枚举每个障碍物,若有障碍物在区间内就跳过,否则就判断每个在区间内的障碍物所需的最小角度,通过角度能算出速度。然后在这些角度中取一个最大值。需要注意的是:因为答案所求的是最小的速度,而不是最小角度,而要达到最小速度则需要显然45度最小。所以若所有角度最大值比45度小,则选取作为最小速度的角度要用45度。
代码:
解题思路:因为限制的反弹次数是有限的,所以枚举每一个反弹次数,然后求出每个区间长度len=d/(b+1);对于每个区间暴力枚举每个障碍物,若有障碍物在区间内就跳过,否则就判断每个在区间内的障碍物所需的最小角度,通过角度能算出速度。然后在这些角度中取一个最大值。需要注意的是:因为答案所求的是最小的速度,而不是最小角度,而要达到最小速度则需要显然45度最小。所以若所有角度最大值比45度小,则选取作为最小速度的角度要用45度。
代码:
#include<bits/stdc++.h> using namespace std; double p[111],h[111],ans[111]; double sov(double d,double p,double h) { double a1=-(1.0/2.0)*p*p,b1=p,c1=h,a2=-(1.0/2.0)*d*d,b2=d,c2=0.0; double xa=(c1*b2-c2*b1)/(a1*b2-a2*b1); double xb=(a1*c2-c1*a2)/(a1*b2-a2*b1); double vx=sqrt(1.0/xa); double vy=xb*vx; return vy/vx; } int main() { //freopen("test","r",stdin); double d; int n,b; while(scanf("%lf%d%d",&d,&n,&b)!=EOF) { for(int i=1;i<=n;i++) { scanf("%lf%lf",&p[i],&h[i]); } for(int i=0;i<=b;i++) { ans[i]=999999.0; double len=d/(i+1); int fa=1; for(int j=1;j<=n;j++) { for(int k=1;k<=i;k++) { if(k*len==p[j]) { fa=0; break; } } if(fa==0) { break; } } if(fa==0) { continue; } double maxn=1.0; for(int j=0;j<=b;j++) { double qi=len*j; double zhong=len*(j+1); for(int k=1;k<=n;k++) { if(p[k]>qi&&p[k]<zhong) { double dd=sov(len,p[k]-qi,h[k]); maxn=max(maxn,dd); } } } ans[i]=sqrt(len/2.0/maxn)*sqrt(1.0+maxn*maxn); } double mmm=9999999.0; for(int i=0;i<=b;i++) { mmm=min(mmm,ans[i]); } printf("%.5f\n",mmm); } return 0; }
相关文章推荐
- Go语言几大命令简单介绍
- GridView自带分页 1总页数 首页 下一页 上一页 尾页 X 页 go 实现方法 .
- Django笔记教程:四、会话、注册、以及用户
- mongorestore 恢复mongodump文件报BSONObj size: 17794400 (0x10F8560) is invalid. Size must be between 0 and
- flowplayer设置视频logo
- self,super,protocol,category,extension 的用法
- Objc-C 知识点回顾 八 NSDate、 Extension、Category、Delegate
- Gosn的使用
- FakeID签名漏洞分析及利用(Google Bug 13678484)
- Firefox失去了Google一年3亿美金的搜索授权费
- TiDB安装make时报错:unrecognized import path "golang.org/x/tools/go/gcimporter"和unrecognized import path "golang.org/x/tools/go/types"
- Django 之更改密码加密类型
- TiDB安装make时报错:unrecognized import path "golang.org/x/tools/go/gcimporter"和unrecognized import path "
- MIGO时没发料不允许入库
- 11 类别(category)和扩展(extension)
- UVALive 6835 Space Golf(物理题)
- Concurrency In Golang
- 每次使用都要去Google的基础知识--.lib与.dll
- 每次使用都要去Google的基础知识--.lib与.dll
- HD 1533 Going Home(最小费用最大流模板)