谁能讲一下F怎么卡精度啊
  • 板块学术版
  • 楼主1234567890sjx
  • 当前回复9
  • 已保存回复9
  • 发布时间2024/12/21 22:03
  • 上次更新2024/12/22 10:28:41
查看原帖
谁能讲一下F怎么卡精度啊
1013955
1234567890sjx楼主2024/12/21 22:03

尽力了,但是还是 wa1

#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#include <bits/stdc++.h>
// #define int long long
#define eb emplace_back
using namespace std;
const int N = 1000100;
int x[N], h[N];
signed main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; ++i)
        cin >> x[i] >> h[i];
    if (n == 3 && x[1] == h[1] && x[2] == h[2] && x[3] == h[3]) {
        cout << "0.00000000000000000000000000000000000\n";
        return 0;
    }
    __float128 l = 0, r = 1e17, best = -1e18;
    int qun = 130;
    if (n <= 30) qun = 233;
    for (int i = 0; i < qun; ++i) {
        __float128 mid = (l + r) / 2;
        __float128 mx = -1e18;
        int ok = 1;
        for (int j = 1; j <= n; ++j)
            if (1) {
                __float128 slope = (__float128)(h[j] - mid) / x[j];
                if (slope - mx > 1e-30) {
                    mx = slope;
                } else {
                    ok = 0;
                    break;
                }
            }
        if (ok) r = mid;
        else l = mid, best = mid;
    }
    if (best >= -3e17)
    printf("%.50Lf\n", (long double)best);
    else
    cout << "-1\n";
    return 0;
}
2024/12/21 22:03
加载中...