题目大意:

https://nanti.jisuanke.com/t/34142

有一个弯道抽象成圆的一部分 车子抽象成矩形

漂移过程中矩形上边会与圆的圆心在同一条直线上

以右上点贴着弯道边缘进行漂移

看不懂题意导致几何题没能做出来 我这个替补选手的临时补位真是愧对队友

所幸是模拟赛 英语渣的痛希望四级放过我

车子漂移时 实际上最远点会画出一个圆 如上红圆

那么当角度为如上a角时 轨道宽度此时必须最大

而角度大于a角时 轨道宽度同样必须为最大 根据勾股定理此时 maxw=sqrt( (a+r)*(a+r)+b*b ) - r

所以此时还需要解决角度小于a时的情况 如上橙色矩形

此时w可小于最大 发现其最远点与等于a角时的最远点 实际上在红圆上形成了一个圆心角 thi

那么就可以计算出thi对应的弦的长度L 而弦与直轨道的夹角ang也是可求的

所以可以得到w的减小值为L*sin(ang) 所以此时 w=maxw-L*sin(ang)

PS: 代码中的角度名与上述讲解并不一一对应

#include <bits/stdc++.h>
using namespace std;
const double PI=acos(-1.0);
const double eps=1e-;
int dcmp(double x) {
if(abs(x)<eps) return ;
else return x> ? :-;
}
int main()
{
int t; scanf("%d",&t);
while(t--) {
int a,b,r,d; scanf("%d%d%d%d",&a,&b,&r,&d);
double maxr=sqrt((a+r)*(a+r)+b*b);
double thi=acos((a+r)*1.0/maxr);
double arf=d*1.0/180.0*PI;
if(dcmp(arf-thi)>=) printf("%.12f\n",maxr-1.0*r);
else {
double ang=thi-arf;
double ang1=(PI-ang)/2.0;
double L=cos(ang1)*maxr*2.0;
double ang2=PI/2.0-ang1;
double bye=sin(ang2)*L;
printf("%.12f\n",maxr-1.0*r-bye);
}
} return ;
}

最新文章

  1. atitit.日期,星期,时候的显示方法ISO 8601标准
  2. 弹框控件 UIAlertView UIActionSheet
  3. FreeMarker中文API手册(完整)
  4. HtmlAgilityPack搭配 ScrapySharp或HtmlAgilityPack.CssSelectors
  5. Bzoj3510首都
  6. IBatis插入类的实例
  7. 源码解读—HashTable
  8. 译:Datetime类型的扩展
  9. Kth Largest Element in an Array
  10. 利用SecureCRT上传、下载文件(使用sz与rz命令),超实用!
  11. 一款基于jQuery/CSS3实现拼图效果的相册
  12. java 文件类操作(转载)
  13. Python Set集合,函数,深入拷贝,浅入拷贝,文件处理
  14. MVC推荐教程和文章列表
  15. jQuery 查找带有某一属性的元素
  16. java基础(十二章)
  17. wsimport 命令不是内部命令
  18. canvas将图片转为base64
  19. Django 之 流程和命令行工具
  20. WPFのDecorator 、Adorner和AdornerDecorator

热门文章

  1. java求两个数中的大数
  2. 批处理禁止指定的IE的加载项
  3. java文件上传方式1servlet 方式2springmvc
  4. 替换war包中的文件
  5. MVC3中_ViewStart.cshtml的一些事
  6. jsp2自定义标签+属性
  7. Linux关闭端口
  8. 让微信小程序页面之间的通信不在变得困难
  9. 伪类checked
  10. selenium IDE的安装及录制回放的简单使用