最优解情况下每个分量的导数相同,二分这个导数即可。
#include <lastweapon/io>
using namespace lastweapon;
const int N = int(1e4) + 9;
int n;
double e, s[N], k[N], u[N];
double calcV(double x, int i) {
    double l = 0, r = INF, mid;
    int cnt = 233;
    while(cnt--) {
        mid = (l+r)/2;
        if(2*k[i]*s[i]*mid*mid*(mid-u[i])*x > -s[i]) l = mid ;else r = mid;
    }
    return (l+r)/2;
}
double calcE(double x) {
    double res = 0;
    REP(i, n) {
        double v = calcV(x, i);
        res += k[i]*(v-u[i])*(v-u[i])*s[i];
    }
    return res;
}
int main() {
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    //freopen("out.txt", "w", stdout);
#endif
    RD(n);
    RF(e);
    REP(i, n) RF(s[i], k[i], u[i]);
    double l = -INF, r = 0, mid;
    DO(100){
        mid = (l+r)/2;
        if(calcE(mid) <= e) l = mid ;else r = mid;
    }
    mid = (l+r)/2;
    double ans = 0;
    REP(i, n) ans += s[i] / calcV(mid, i);
    printf("%.6lf", ans);
}
                                                												
											



 Alca
 Amber
 Belleve Invis
 Chensiting123
 Edward_mj
 Fotile96
 Hlworld
 Kuangbin
 Liyaos
 Lwins
 LYPenny
 Mato 完整版
 Mikeni2006
 Mzry
 Nagatsuki
 Neko13
 Oneplus
 Rukata
 Seter
 Sevenkplus
 Sevenzero
 Shirleycrow
 Vfleaking
 wangzhpp
 Watashi
 WJMZBMR
 Wywcgs
 XadillaX
 Yangzhe
 三途川玉子
 About.me
 Vijos
