zoukankan      html  css  js  c++  java
  • 二分三分

    HDU 2274

    三分 求这些二次函数最大值最小 

    反正三分能求吧 

    #include <iostream>
    #include<string.h>
    #include<stdio.h>
    #include<algorithm>
    #include<string>
    #include<math.h>
    
    using namespace std ;
    
    #define e 2.7182818284
    #define LL __int64
    #define MAXN 20010
    #define inf  1000000000
    
    struct para
    {
        int a,b,c;
    }pa[MAXN];
    int n;
    
    double f1(double a)
    {
        double m1=-inf;
        for(int i=1;i<=n;i++)
        {
            if(pa[i].a*a*a+pa[i].b*a+pa[i].c>m1)
                m1=pa[i].a*a*a+pa[i].b*a+pa[i].c;
        }
        return m1;
    }
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
                scanf("%d%d%d",&pa[i].a,&pa[i].b,&pa[i].c);
            double ll,rr;
            ll=0;
            rr=1000;
            while(rr-ll>1e-9)
            {
                double l,r;
                l=ll+(rr-ll)/3;
                r=ll+2*(rr-ll)/3;
                if(f1(r)>f1(l))
                    rr=r;
                else
                    ll=l;
            }
            printf("%.4lf
    ",f1(ll));
        }
        return 0;
    }
    View Code

    HDU 2289

    给你一些量  算出杯子里面水的高度

    二分就行 

    #include <iostream>
    #include<string.h>
    #include<stdio.h>
    #include<algorithm>
    #include<string>
    #include<math.h>
    
    using namespace std ;
    
    #define e 2.7182818284
    #define LL __int64
    #define MAXN 20010
    #define inf  1000000000
    
    double pi  = 4*atan(1.0);
    double r,R,h,v;
    double f(double a)
    {
        double r1=(R-r)*a/h+r;
        return a*pi*(r*r+r*r1+r1*r1)/3;
    }
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            double l1,r1;
            scanf("%lf%lf%lf%lf",&r,&R,&h,&v);
            l1=0;
            r1=h;
            while(r1-l1>1e-9)
            {
                double mid=(l1+r1)/2;
               // printf("%lf %lf
    ",L,R);
                if(f(mid)>v)
                    r1=mid;
                else
                    l1=mid;
    
            }
            printf("%.6lf
    ",l1);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    [css]display: table-cell,用div做分列布局
    [css]《CSS知多少》
    关于安装Android Studio的一些问题的解决方法
    枚举
    揭开计算机的神秘面纱
    Android模拟器访问本地Web应用
    Android开发中常用的Eclipse快捷键
    详解Windows平台搭建Androiod开发环境
    Web 应用的安全性
    坚持才能成功------王健林
  • 原文地址:https://www.cnblogs.com/cherryMJY/p/6492289.html
Copyright © 2011-2022 走看看