Java快读

如果输入数据总量 ≥ 10^5,则应该考虑使用快读。
尤其是:总整数个数 ≥ 100000,或输入文件大小 ≥ 几 MB
且语言是 Java,因为 Java 的 Scanner 会非常慢,本质上是“正则解析器”,时间复杂度远高于预期。

static class FastScanner {
    private final InputStream in = System.in;
    private final byte[] buffer = new byte[1 << 16];
    private int ptr = 0, len = 0;

    private int read() throws IOException {
        if (ptr >= len) {
            len = in.read(buffer);
            ptr = 0;
            if (len == -1) return -1;
        }
        return buffer[ptr++];
    }

    int nextInt() throws IOException {
        int c;
        while ((c = read()) <= ' ') {
            if (c == -1) return -1;
        }
        int sign = 1;
        if (c == '-') {
            sign = -1;
            c = read();
        }
        int val = c - '0';
        while ((c = read()) > ' ') {
            val = val * 10 + (c - '0');
        }
        return val * sign;
    }
}

posted @ 2025-12-06 00:39  Nickey103  阅读(3)  评论(0)    收藏  举报