zoukankan      html  css  js  c++  java
  • LA5009 Error Curves

    题目大意:给定n个二次函数fi(x),规定F(x) = max(fi(x)),求F在[0,1000]上的max

    其实F(x)也是一个单峰函数,因为如果出现双峰,显然有一个可以继续往上走把另一个峰遮住,即另一个峰不可能是max

    三分即可

    被精度卡了半天

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <algorithm>
     6 #include <queue>
     7 #include <vector>
     8 #include <map>
     9 #include <string> 
    10 #include <cmath> 
    11 #define min(a, b) ((a) < (b) ? (a) : (b))
    12 #define max(a, b) ((a) > (b) ? (a) : (b))
    13 #define abs(a) ((a) < 0 ? (-1 * (a)) : (a))
    14 template<class T>
    15 inline void swap(T &a, T &b)
    16 {
    17     T tmp = a;a = b;b = tmp;
    18 }
    19 inline void read(int &x)
    20 {
    21     x = 0;char ch = getchar(), c = ch;
    22     while(ch < '0' || ch > '9') c = ch, ch = getchar();
    23     while(ch <= '9' && ch >= '0') x = x * 10 + ch - '0', ch = getchar();
    24     if(c == '-') x = -x;
    25 }
    26 
    27 const double INF = 0x3f3f3f3f;
    28 const double eps = 0.0000000001;
    29 
    30 
    31 int t,n,a[10100],b[10100],c[10010];
    32 
    33 double f(double x)
    34 {
    35     double ma = x * x * a[1] + x * b[1] + c[1], t;
    36     for(int i = 2;i <= n;++ i) 
    37     {
    38         t = x * x * a[i] + x * b[i] + c[i];
    39         //if(!cmp(t, ma)) ma = t;
    40         ma = max(ma, t);
    41     }
    42     return ma;
    43 }
    44 
    45 int main()
    46 {
    47     read(t);
    48     for(;t;--t)
    49     {
    50         read(n);
    51         for(int i = 1;i <= n;++ i) read(a[i]), read(b[i]), read(c[i]);
    52         double l = 0, r = 1000, ans, mid1, mid2;
    53         while(r - l - eps >= 0)
    54         {
    55             mid1 = l + (r - l) / 3.0;mid2 = r - (r - l) / 3.0;
    56             if(f(mid1) - f(mid2) >= 0) l = mid1;
    57             else r = mid2;
    58         }
    59         printf("%.4lf
    ", f(l));
    60     }
    61     return 0;
    62 }
    LA5009
  • 相关阅读:
    VS 2010下一次性配置opencv(32位和64位相同)
    模拟鼠标事件
    Main函数参数argc,argv说明
    Visual Studio 2010 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏解决方案
    常量指针和指针常量
    strlen函数实现的几种方法
    杀死指定的进程名
    typedef和typename关键字
    如何理解dart的mixin
    c# 通过dllimport 调用c 动态链接库
  • 原文地址:https://www.cnblogs.com/huibixiaoxing/p/8375760.html
Copyright © 2011-2022 走看看