zoukankan      html  css  js  c++  java
  • 萌新三分讲解+基础题ZOJ3203【三分凸性】

    (温馨提示:图片外部食用更加)

    mid=(left+right)>>1,midmid=(mid+right)>>1;

    举凸性函数的例子:

    首先我们一定要明确问题:求极值,这里是极大值。

    如图,

    第一种情况下:mid一定在midmid的左边,而且为什么只能确定左端?因为midmid位于极值位置未知,但是mid一定是左边!所以left=mid.

    第二种情况下:midmid一定在mid的右边,且一定在极值点的右边,mid却未知,所以right=midmid.

    同理凹型函数的方法。

    ZOJ3203:

    我知道只要告诉题意读者就能AC了。

    给你灯的高度H,人的高度h,灯离墙的高度D,H>h.

    思路:数学函数分析+感觉增减性。注意精度(1e-9 is good.)

    Code is not important, but it's necessary.

    //#include <bits/stdc++.h>
    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    typedef long long LL;
    typedef pair<int,int> PII;
    const double eps=1e-9;
    
    double H,h,D;
    
    double fun(double x)
    {
        return (D+H+(h-H)*D/x-x);
    }
    
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%lf%lf%lf",&H,&h,&D);
            double left=D-h*D/H,right=D;
            while(left+eps<right)
            {
                double mid,midmid;
                mid=(left+right)/2;
                midmid=(mid+right)/2;
                double cmid,cmidmid;
                cmid=fun(mid);
                cmidmid=fun(midmid);
                if(cmid>cmidmid)
                    right=midmid;
                else
                    left=mid;
            }
            double ans=fun(left);
            printf("%.3lf
    ",ans);
        }
        return 0;
    }
    

    That's all, thanksfor watching!

  • 相关阅读:
    svn和git的优缺点
    idea 的MAVEN Lifecycle 基本用法
    递归SQL---树形结构
    基本:linux命令
    2017年9月22日01:42:08
    简述数据库的设计过程
    HelloH5+搭建
    【Java报错】Message: 3 字节的 UTF-8 序列的字节 2 无效
    css class嵌套
    【java报错】Could not instantiate listener
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777427.html
Copyright © 2011-2022 走看看