zoukankan      html  css  js  c++  java
  • #10013 曲线 (三分法模板题)

    【题目描述】

        明明做作业的时候遇到了 n 个二次函数 Si​​(x)=ax2​​+bx+c,他突发奇想设计了一个新的函数 F(x)=max{Si(x)},i=1…n

    明明现在想求这个函数在[0,1000] 的最小值,要求精确到小数点后四位,四舍五入。

    【题目链接】

        https://loj.ac/problem/10013

    【代码】

     1 #include <bits/stdc++.h>
     2 #define eps 1e-10
     3 using namespace std;
     4 int T,n;
     5 int a[100010],b[100010],c[100010];
     6 double calc(double x,int y) { return a[y]*x*x+b[y]*x+c[y]; }
     7 int main()
     8 {
     9     scanf("%d",&T);
    10     while(T--) {
    11         int n; scanf("%d",&n);
    12         double ans=1e20,l=0.0,r=1000.0;
    13         for(int i=1;i<=n;i++) scanf("%d%d%d",&a[i],&b[i],&c[i]);
    14         while(r-l>eps) {
    15             double lmid=l+(r-l)/3,rmid=l+2*(r-l)/3;
    16             double lval=-1,rval=-1;
    17             for(int i=1;i<=n;i++) lval=max(lval,calc(lmid,i)),rval=max(rval,calc(rmid,i));
    18             ans=min(ans,min(lval,rval));
    19             if(lval>rval) l=lmid;
    20             else r=rmid;
    21         }
    22         printf("%.4f
    ",ans);
    23     }
    24     return 0;
    25 }
  • 相关阅读:
    人生无常 淡然处之
    对PHP开发的认知
    专家路线
    很少接触的文学
    懒加载
    Markdown入门 学习
    (转载)iOS开发历程书籍推荐
    ObjectiveC1基础代码——类和对象
    day11基础代码——函数指针
    day6
  • 原文地址:https://www.cnblogs.com/Willendless/p/9502440.html
Copyright © 2011-2022 走看看