求教 java 版本代码最后一个测试用例 WA 了
查看原帖
求教 java 版本代码最后一个测试用例 WA 了
1244392
wodoubuzhidao楼主2024/1/12 14:33

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;
    }


}

2024/1/12 14:33
加载中...