Ural - 1753 Bookshelf

来源:互联网 发布:mastercam9.1软件下载 编辑:程序博客网 时间:2024/05/18 02:35

    链接:Ural - 1753

    题意:书架高为 h ,长为 L,书本高为 H。现将书本向左倾斜,向右滑动,问书本顶端对书架左端重锤线的最大偏离距离是多少。

    思路:书本滑动时,可以看到,偏离距离会先增大再减小,是一条单峰曲线。所以要根据对应数学关系先求出曲线函数,然后进行三分求最大值。注意浮点数的比较。


                                        Problem illustration


#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <iomanip>#include <cmath>using namespace std;double eps=1e-8;int h,H,L;double f(double x){return ((H/2.0*x)/sqrt(x*x+h*h) - x);}int main(){cin>>h>>H>>L;double l = 0,r = H;while(r - l >= eps){double m = (l+r)/2.0;double mm = (m+r)/2.0;double ans1 = f(m);double ans2 = f(mm);if(ans1 > ans2) r = mm;else l = m;}int ansm = (l+r)/2;cout<<fixed<<setprecision(6)<<f(l)<<endl;return 0;}



0 0
原创粉丝点击