zoukankan      html  css  js  c++  java
  • hdu 2899 hdu 3400 三分/几何

    hdu2899 ;

    水提,直接三分,事实上求导后二分也能够。

    #include<iostream>
    #include<cstdio>
    using namespace std;
      double y;
      double inline f( long double x)
    {
        return 6*x*x*x*x*x*x*x+8*x*x*x*x*x*x+7*x*x*x+5*x*x-y*x;
    }
    int main()
    {
        int T;scanf("%d",&T);
        while(T--)
        {
            cin>>y;
            double l,r,m1,m2;
            l=0;r=100;
            while(r-l>0.000001)
            {
                m1=l+(r-l)/3;
                m2=r-(r-l)/3;
                if(f(m1)<f(m2))
                {
                    r=m2;
                }
                else
                {
                    l=m1;
                }
            }
           printf("%.4lf
    ",f(l));
        }
        return 0;
    }
    


    hdu3400  有俩个未知。第一次确定。则第二个函数式先见后增的,而第二个反馈出最小值后,第一个未知也是先见后增的,所以三分套三分(九分??呵呵~)

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    struct xy
    {
        double x,y;
    };
    double inline dis( xy a,xy b)
    {
        return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
    }
    xy A,B,C,D;    int p,q,r;
    double inline s(xy a ,xy b)
    {
        return dis(a,A)/p+dis(a,b)/r+dis(b,D)/q;
    }
    double f(xy t)
    {
         xy l,r,m1,m2;
         l=C;r=D;
            while(dis(r,l)>0.0001)
            {
                m1.x=l.x+(r.x-l.x)/3;
                m1.y=l.y+(r.y-l.y)/3;
                m2.x=r.x-(r.x-l.x)/3;
                m2.y=r.y-(r.y-l.y)/3;
                if(s(t,m1)<s(t,m2))
                {
                    r=m2;
                }
                else
                {
                    l=m1;
                }
            }
            return s(t,l);
    }
    
    int main()
    {
        int T;scanf("%d",&T);
        while(T--)
        {
            scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y,&D.x,&D.y);
            scanf("%d%d%d",&p,&q,&r);
            xy l,r,m1,m2;
            l=A;r=B;
            while(dis(r,l)>0.0001)
            {
                m1.x=l.x+(r.x-l.x)/3;
                m1.y=l.y+(r.y-l.y)/3;
                m2.x=r.x-(r.x-l.x)/3;
                m2.y=r.y-(r.y-l.y)/3;
                if(f(m1)<f(m2))
                {
                    r=m2;
                }
                else
                {
                    l=m1;
                }
            }
           printf("%.2lf
    ",f(l));
        }
        return 0;
    }
    





  • 相关阅读:
    Vue 获取dom元素中的自定义属性值
    php文件包含
    php数组运算符
    管理一组事物的状态
    php数据类型转换
    php函数
    PHP循环while do while循环
    php的流程控制 if elseif swich case for循环
    php的工作原理
    python算数、逻辑运算,位运算
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5059521.html
Copyright © 2011-2022 走看看