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;
    }
    





  • 相关阅读:
    相机中白平衡的算法模拟实现
    双边滤波算法的简易实现bilateralFilter
    图像处理卷积算法实现
    最快的3x3中值模糊
    黑米手机抢购软件通杀破解补丁
    分享一款12306购票软件
    快速堆栈模糊算法
    大数据(1)---大数据及HDFS简述
    springboot自动装配(3)---条件注解@Conditional
    随机瓜分百万红包
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5059521.html
Copyright © 2011-2022 走看看