P1883 函数

Posted pangbi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1883 函数相关的知识,希望对你有一定的参考价值。

题意:技术图片

 

 思路:根据题目中给出的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
",F(L));
29     }
30     return 0;
31 }
View Code

 

以上是关于P1883 函数的主要内容,如果未能解决你的问题,请参考以下文章

P1883 函数

VSCode自定义代码片段——声明函数

VSCode自定义代码片段8——声明函数

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

在 Visual Studio 中创建构造函数的代码片段或快捷方式

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段