输入优化
模拟了一下数据量:一共100000行数据,每行100个,一共一千万的数据.
使用scanner的next()读取耗时2500ms左右,这个数据量并不算很夸张,的确有些题的数据量能到这个层次.
使用了这个输入优化后读取耗时400ms左右,这个速度在数据量大的时候可以说是至关重要.
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
InputReader in = new InputReader(System.in);
}
// 借鉴cf上某个java大佬的写法,只是为了解决读取输入太慢的问题
static class InputReader {
public BufferedReader reader;
public StringTokenizer tokenizer;
public InputReader(InputStream stream) {
reader = new BufferedReader(new InputStreamReader(stream), 32768);
tokenizer = null;
}
public String next() {
while (tokenizer == null || !tokenizer.hasMoreTokens()) {
try {
tokenizer = new StringTokenizer(reader.readLine());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return tokenizer.nextToken();
}
public int nextInt() {
return Integer.parseInt(next());
}
}
}

浙公网安备 33010602011771号