java 版本代码最后一个测试用例 WA 了 结果和最总答案差了0.01
import java.io.*;
public class Main{
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StreamTokenizer in = new StreamTokenizer(br);
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
while (in.nextToken() != StreamTokenizer.TT_EOF) {
int hang = (int) in.nval;
double[][] data = new double[hang][3];
for (int i = 0; i < hang; i++) {
in.nextToken();
data[i][0] = in.nval;
in.nextToken();
data[i][1] = in.nval;
in.nextToken();
data[i][2] = in.nval;
}
System.out.println(String.format("%.2f", find(data)));
}
out.flush();
out.close();
br.close();
}
static boolean jude(double[][] data, double va) {
int length = data.length;
double pretime = 0;
for (int i = 0; i < length; i++) {
pretime =pretime+(data[i][2]/ va);
if (pretime > data[i][1]) return false;
pretime = Math.max(pretime, data[i][0]);
}
return true;
}
static double find(double[][] data) {
double s = 0;
double e = 100000000d;
double mid = 0;
double ans = 0;
while (0.000001d <= (e - s)) {
mid = ((e+s) / 2d) ;
if (jude(data, mid)) {
ans = mid;
e = mid;
} else {
s = mid;
}
}
return ans;
}
}