1 条题解
-
1
这道题你首先需要证明 是一个单谷函数
反证法。
假设 有两个谷,那么大概长这样:

显然不满足 ,假设不成立
接下来就用一个简单的三分……
什么,你说你不会三分?那好吧,点这个
下面放一个AC代码,
注释写在解释里#include<iostream> #include<cstdio> using namespace std; struct fuc{ int a,b,c; }f[100005]; int T,n; double l,r,mid,l_mid,r_mid; double check(double x){//计算 F(x) double ans=-2100000000; for (int i=1;i<=n;i++){ ans=max(ans, f[i].a*x*x + f[i].b*x + f[i].c); } return ans; } int main(){ scanf("%d",&T); while (T--){ scanf("%d",&n); for (int i=1;i<=n;i++){ scanf("%d%d%d",&f[i].a,&f[i].b,&f[i].c); } l=0,r=1000; while (r-l>1e-9){ //精度要注意一下,因为题目要输出的是 F(x) 的值 mid=(l+r)/2; l_mid=mid-(r-l)/10; r_mid=mid+(r-l)/10; if (check(l_mid)>check(r_mid)){ l=l_mid; } else r=r_mid; } printf("%.4lf\n",check(l)); } return 0; }
- 1
信息
- ID
- 63
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 17
- 已通过
- 12
- 上传者