求调
  • 板块题目总版
  • 楼主xpg007
  • 当前回复3
  • 已保存回复4
  • 发布时间2024/4/20 12:20
  • 上次更新2024/4/20 14:42:41
查看原帖
求调
1024680
xpg007楼主2024/4/20 12:20

题目链接P1883

我的代码 RE 50%:

#include <bits/stdc++.h>
using namespace std;
const double inf=2e9;
double a[1001], b[1001], c[1001];
double f(double x, int n){
    double maxx = -1e9;
    for (int i = 0; i < n; i++)
        maxx = max(a[i] * x * x + b[i] * x + c[i], maxx);
    return maxx;
}
int main(){
    int q;
    cin >> q;
    for (int k = 1; k <= q; k++){
        int n;
        cin >> n;
        for (int i = 0; i < n; i++)
            cin >> a[i] >> b[i] >> c[i];
        double l = 0, r = 1000;
        while ((l + 1e-10) < r){
            double mid1 = (l + l + r) / 3, mid2 = (l + r + r) / 3;
            double v1 = f(l, n);
            double v2 = f(mid1, n);
            double v3 = f(mid2, n);
            double v4 = f(r, n);
            if(v1 < v2)
                r = mid1;
            else if(v4 < v3)
                l = mid2;
            else if(v1 > v2 && v2 < v3)
                r = mid2;
            else if(v4 > v3 && v3 < v2)
                l = mid1;
            else
                l = mid1, r = mid2;
        }
        printf("%.4lf\n",f(l, n));
    }
    return 0;
}
2024/4/20 12:20
加载中...