输入输出优化
对于c++:
一、可以通过使用scanf()、printf()的方式进行输入输出,速度是比较快的
二、对与cin,cout,可以在main函数开头取消同步流:ios::sync_with_stdio(0), cin.tie(0),cout.tie(0);
对于java:
常见的Scanner来进行读取文本,但对于百万级输入输出而言,Scanner和System.out.println就显得有些力不从心。常见的优化方式就是一次性从缓冲区读入一行字符串,通过分割字符串一系列相关操作来进行读入
java提供了BufferedReader类来实现相关操作,如下是我经常用的一个模板,加入的StringTokenizer()类
import java.io.BufferedReader; import java.io.IOException; import java.util.StringTokenizer; import java.io.InputStreamReader; import java.io.PrintWriter; public class Main { static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); static PrintWriter out = new PrintWriter(System.out); static StringTokenizer st; static String next() { String str = ""; if(st == null || !st.hasMoreTokens()) { try{ str = bf.readLine(); }catch(IOException e) { e.printStackTrace(); } st = new StringTokenizer(str); } return st.nextToken(); } static int nextInt() { return Integer.parseInt(next()); } static Long nextLong() { return Long.parseLong(next()); } static double nextDouble() { return Double.parseDouble(next()); } static String nextLine() { String str = ""; try{ str = bf.readLine(); } catch(IOException e) { e.printStackTrace(); } return str; } public static void main(String[] args) { int x = nextInt(); out.println(x); } } 因为readLine方法会将回车键去掉,所以不用考虑回车对下一个字符串的影响