• HDU 3714 Error Curves


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3714

    这题我死活没读懂什么意思,后来还是别人讲的我才明白。

    题目:给出一组一元二次方程,用这一组一元二次方程生成一个新的函数F(x),求F(x)的最小值。x 对应F(x) 的值=这一组一元二次方程中yi = ai * x^2 + bi * x + cy最大的那一个。

    分析:凹函数求极值,三分法。

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 struct node
     5 {
     6     int a, b, c;
     7 };
     8 
     9 const int MAXN = 10000 + 10;
    10 const double EXP = 1e-12;
    11 const double INF = 2147483646;
    12 
    13 int n;
    14 node D[MAXN];
    15 
    16 double calcu( double x )
    17 {
    18     double ans = -INF;
    19     double temp;
    20 
    21     for ( int i = 0; i < n; i++ )
    22     {
    23         temp = D[i].a * x * x + D[i].b * x + D[i].c;
    24         if ( temp > ans ) ans = temp;
    25     }
    26 
    27     return ans;
    28 }
    29 
    30 double Solve()
    31 {
    32     double Left = 0, Right = 1000;
    33     double mid, midmid;
    34     double mid_value, midmid_value;
    35 
    36     while ( Left + EXP < Right )
    37     {
    38         mid = ( Left + Right ) / 2;
    39         midmid = ( mid + Right ) / 2;
    40         mid_value = calcu(mid);
    41         midmid_value = calcu(midmid);
    42 
    43         if ( mid_value <= midmid_value ) Right = midmid;
    44         else Left = mid;
    45     }
    46 
    47     return calcu(Left);
    48 }
    49 
    50 int main()
    51 {
    52     int T;
    53     scanf( "%d", &T );
    54     while( T-- )
    55     {
    56         scanf( "%d", &n );
    57         for ( int i = 0; i < n; i++ )
    58            scanf( "%d%d%d", &D[i].a, &D[i].b, &D[i].c );
    59 
    60         printf( "%.4f\n", Solve() );
    61     }
    62     return 0;
    63 }
  • 相关阅读:
    Xamarin.FormsShell基础教程(3)Shell项目构成
    Xamarin.FormsShell基础教程(2)创建Shell解决方案
    Xamarin.Forms Shell基础教程(1)
    点击按钮,返回顶部
    三角形(css3)
    改变字体大小的媒体查询代码封装
    将毫秒格式化为分钟和秒 ,并补0
    节流函数
    打乱数组方法
    css使用总结
  • 原文地址:https://www.cnblogs.com/GBRgbr/p/2623892.html
Copyright © 2020-2023  润新知