zoukankan      html  css  js  c++  java
  • 清北学堂模拟赛d3t5 c

    分析:其实就是一道数学题.如果以左下角的点为原点建立平面直角坐标系,那么点(b,a)是最容易卡住棺材的.我们求出棺材左边到点(b,a)的距离最小值,只有w小于等于这个最小值才能被拉过去.那么先求出左面这条直线的函数解析式,利用点到直线的距离公式,可以求得距离.不过因为有两个未知数,我们需要枚举其中一个未知数,观察得到这是一个单峰函数,利用三分法就能解决了.

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <cmath>
    
    using namespace std;
    
    int a, b, l;
    
    double check(double v1)
    {
        double v2 = sqrt(l * l - v1 * v1);
        if (a * v1 + b * v2 < v1 * v2)
            return -1e+20;
        return (a*v1 + b * v2 - v1 * v2) / l;
    }
    
    int main()
    {
        scanf("%d%d%d", &a, &b, &l);
        if (a >= l && b >= l)
            printf("%d.0000000
    ", l);
        else
            if (a >= l)
                printf("%d.0000000
    ", b);
            else
            if (b >= l)
                printf("%d.0000000
    ", a);
            else
            {
                double l0 = 0.0, r0 = l;
                for (int i = 1; i <= 100; i++)
                {
                    double m1 = (r0 - l0) / 3.0 + l0;
                    double m2 = (r0 - l0) / 3.0 * 2+ l0;
                    if (check(m1) < 0.0 || check(m2) < 0.0)
                    {
                        printf("My poor head =(
    ");
                            return 0;
                    }
                    if (check(m1) < check(m2))
                        r0 = m2;
                    else
                        l0 = m1;
                }
                printf("%.7lf
    ", check(r0));
            }
    
        return 0;
    }
  • 相关阅读:
    用JavaScript 实现变速回到顶部
    导出数据到Excel
    Jquery ajax调用webService,远程访问出错解决办法
    火狐和IE的window.event对象详解
    硬盘、U盘添加漂亮背景
    JS 获取当前日期时间(兼容IE FF)
    Base64编码
    师生关系
    关于计算机导论的问题
    自我介绍
  • 原文地址:https://www.cnblogs.com/zbtrs/p/7629064.html
Copyright © 2011-2022 走看看