链接:https://www.nowcoder.com/acm/contest/200/E
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
Special Judge, 64bit IO Format: %lld

题目描述

女装会成瘾
由于某人的精心设计,小可爱掉入了女装的天坑无法自拔。
于是……她开始疯狂的成批的买女装。
而Kirito_Rivaille为了戒掉他的女装病,准备实施家暴——把小可爱的女装从窗户扔下去
他们家距离地面的高度为H,也就是说,女装都是从这了被抛出去的。
而由于Kirito_Rivaille体力有限,(女装也很沉),所以她抛出去的速度最大是v(最小是0);
之后呢,Kirito_Rivaille为了不让小可爱在下去捡到,于是想尽可能的抛的远一点。
所以现在他想找个合适的角度抛出。
作为Kirito_Rivaille身边的活宝,你的任务是帮助Kirito_Rivaille。
给出他们俩住的屋子的高度H和抛出速度v,请你找到一个合适的角度θ使得落地时距他们脚下的地面(H=0的位置)的直线距离最远。
然而小可爱并不关心这个角度是多少,只关心距离他们的直线距离是多少。
输出四舍五入保留五位小数,当你的答案与std的相对误差不超过0.00001时就算正确了。
说明:不考虑空气阻力,g取9.80665。
提示公式:
    x=vtcosθ,
    y=H+vtsinθ-0.5*gt2
其中t为飞行时间。

输入描述:

第一行一个正整数T

接下来T行每行两个实数H,v

输出描述:

T行每行一个数,保留五位小数。

解题思路:题目给出了我们要推的式子
  x=vtcosθ,
       y=H+vtsinθ-0.5*gt2
将y=0带入第2个式子得出时间t

将t再带入第1个式子,得出水平距离x随时间t变化的函数

然后,会求导的求导,不会的根据窝们的常识,扔东西的时候,随着我们的角度增加,距离式先变大在变小的。
一个单峰函数求最值的问题,三分的模板:https://blog.csdn.net/littlewhite520/article/details/70144763

附上代码:

#include<bits/stdc++.h>
using namespace std;
const double eps=1e-;
const double g=9.80665;
const double pi2=1.570796327;
double H,v;
double f(double th)
{
return (v*sin(th)+sqrt(v*v*sin(th)*sin(th)+*g*H))*v*cos(th)/g;
}
void three_divide()
{
double l=,r=pi2;
while(r-l>=eps)
{
double mid1=l+(r-l)/3.0;
double mid2=r-(r-l)/3.0;
if(f(mid1)<=f(mid2))
l=mid1;
else
r=mid2;
}
printf("%.5lf\n",f(l));
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%lf%lf",&H,&v);
three_divide();
}
return ;
}

牛客练习赛28 E迎风舞 (三分查找)的更多相关文章

  1. 牛客练习赛28 B数据结构(线段树)

    链接:https://www.nowcoder.com/acm/contest/200/B来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  2. 线段树 B数据结构 牛客练习赛28

    链接:https://ac.nowcoder.com/acm/contest/200/B来源:牛客网 题目描述 qn姐姐最好了~     qn姐姐给你了一个长度为n的序列还有m次操作让你玩,     ...

  3. 牛客练习赛28-B(线段树,区间更新)

    牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ ​ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, ​ 1 l r 询问区间[l,r]内的元素和 ​ 2 l r 询问区间[l,r]内的 ...

  4. 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D

    目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...

  5. 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B

    牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...

  6. 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A

    牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...

  7. 最小生成树--牛客练习赛43-C

    牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 ​ 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...

  8. 牛客练习赛26:D-xor序列(线性基)

    链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...

  9. [堆+贪心]牛客练习赛40-B

    传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费  x_i 的时间,同时完成第 i 个任务的时间不 ...

随机推荐

  1. Azure系列2.1.9 —— CloudBlob

    (小弟自学Azure,文中有不正确之处,请路过各位大神指正.) 网上azure的资料较少,尤其是API,全是英文的,中文资料更是少之又少.这次由于公司项目需要使用Azure,所以对Azure的一些学习 ...

  2. CMake--变量

    1.一般变量 1)CMake变量引用的方式 使用${}进行变量的引用.例如: ${PROJECT_NAME} #返回项目名称 在 IF 等语句中,是直接使用变量名而不通过${}取值. 2)cmake自 ...

  3. vue图表

    https://www.cnblogs.com/powertoolsteam/p/top-9-javascript-charting-libraries.html

  4. Partition算法以及其应用详解下(Golang实现)

    接前文,除了广泛使用在快速排序中.Partition算法还可以很容易的实现在无序序列中使用O(n)的时间复杂度查找kth(第k大(小)的数). 同样根据二分的思想,每完成一次Partition我们可以 ...

  5. linux命令logger使用

    先从别的地方抄过来全部的解释,如下: **options (选项):** -d, --udp 使用数据报(UDP)而不是使用默认的流连接(TCP) -i, --id 逐行记录每一次logger的进程I ...

  6. vue bug & data type bug

    vue bug & data type bug [Vue warn]: Invalid prop: type check failed for prop "value". ...

  7. 销售合同金额数据从Excel导入

    一.业务需求 1.新增了销售合同金额的字段,但是老数据没有这个字段:所以销售合同金额从销售合同附件的各品种金额之和. 2.制作好excel字段模板,将此模板发送给销售业务部门来统计并完成excel表格 ...

  8. 微信小程序flex佈局

    聲明:display:flex 換行flex-wrap:flex-wrap:nowrap(不換行).wrap(換行).wrap-reserve(第一行在下面): 主軸對齊(橫向對齊)justify-c ...

  9. 文件操作 chardet使用

    #_*_coding:utf-8_*_ import chardet #f = open(file="兼职白领学生空姐模特护士联系方式.txt", mode="rb&qu ...

  10. hdu-5536(字典树)

    题意:给你n个数,让你在n个数中选三个,使得(a1+a2)^a3的值最大,a1!=a2!=a3(下标不等于): 解题思路:01字典树可以写,因为数据小,我们可以先把n个数建一颗字典树,然后两边for找 ...