码迷,mamicode.com
首页 > 其他好文 > 详细

P1883 函数

时间:2020-04-12 20:43:00      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:width   const   div   for   display   else   its   show   printf   

题意:技术图片

 

 思路:根据题目中给出的a的取值范围是【0,100】,可以判断所有的二次函数都是开口向上的函数

   然后F函数,是所有二次函数的总和,取每一个横坐标对应的最大值

   可以发现,这一颗总和的树是开口向上的弧形

   所以,就可以跑三分了

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=1e4+10;
 4 double a[maxn],c[maxn],b[maxn];
 5 int n;
 6 double F(double x){
 7     double bns=a[1]*x*x+x*b[1]+c[1];
 8     for(int i=2;i<=n;i++)
 9         bns=max(bns,x*x*a[i]+x*b[i]+c[i]);
10     return bns;
11 }
12 int main()
13 {
14     int T;
15     scanf("%d",&T);
16     while(T--){
17         scanf("%d",&n);
18         for(int i=1;i<=n;i++)
19             scanf("%lf%lf%lf",&a[i],&b[i],&c[i]);
20         double L=0;double R=1000.0;
21         while(R-L>=0.0000000001){
22             double mid1=(L+R)/2;
23             double mid2=(mid1+R)/2;
24             if(F(mid1)>F(mid2))
25                 L=mid1;
26             else R=mid2;
27         }
28         printf("%.4f\n",F(L));
29     }
30     return 0;
31 }
View Code

 

P1883 函数

标签:width   const   div   for   display   else   its   show   printf   

原文地址:https://www.cnblogs.com/pangbi/p/12687252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!