奇怪的问题
查看原帖
奇怪的问题
214576
whsu楼主2020/7/15 14:43
#include <iostream>
using namespace std;

int a[100005], b[100005], asum = 0;
double t[100005];  // last time without adding electricity
int p, n;

int validate(double time) {
    double sum = 0;
    for (int i=0 ; i<n ; i++) if (t[i]<time) sum += (time-t[i])*a[i];
    return sum<=(p*time);
}

double binSearch() {
    double max = 1e10, min = 0, mid;
    while (max-min>1e-5) {
        mid = (max+min)/2;
        if (validate(mid)) min = mid;
        else max = mid;
    }
    return min;
}

int main(void) {
    cin >> n >> p;
    for (int i=0 ; i<n ; i++) {
        cin >> a[i] >> b[i];
        asum += a[i];
        t[i] = 1.0*b[i]/a[i];
    }

    if (asum <= p) cout << -1 << endl;
    else cout << binSearch() << endl;
    return 0;
}

为啥我这个代码会在在应该是-1的时候进入binSearch那个分支呢??

2020/7/15 14:43
加载中...