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

#10013 曲线(三分)

时间:2019-07-23 10:01:40      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:while   cin   net   ons   一点   href   截图   data   max   

题目

#10013. 「一本通 1.2 例 3」曲线

解析

首先这个题保证了所有的二次函数都是下凸的, \(F(x)=max\{s_i(x)\}i=1...n\)在每一个x上对应的最大的y,我们最后得到的还是一个凸函数
技术图片
这个题比较特殊的一点是函数可能退化为一次,但退化为一次后的函数还是凸函数
技术图片

代码

然后就可以愉快的三分了

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;
const double EPS = 0.000000001;

int t, n;

double a[N], b[N], c[N];
double l, r, lm, rm;
double data[N];

double f(double x) {
    double ret = -0x3f3f3f3f;
    for (int i = 1; i <= n; ++i) ret = max(ret, a[i] * x * x + b[i] * x + c[i]);
    return ret;
}

int main() {
    cin >> t;
    while (t--) {
        cin >> n;
        for (int i = 1; i <= n; ++i)
            cin >> a[i] >> b[i] >> c[i];
        l = 0.0, r = 1000.0;
        while (r - l > EPS) {
            lm = l + (r - l) / 3, rm = r - (r - l) / 3;
            if (f(lm) > f(rm)) l = lm;
            else r = rm;
        }
        printf("%.4lf\n", f(l));
    }
}

#10013 曲线(三分)

标签:while   cin   net   ons   一点   href   截图   data   max   

原文地址:https://www.cnblogs.com/lykkk/p/11229561.html

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