(话说,都什么年代了,谁特么还用java打竞赛啊!)
为什么选择使用java来参加算法竞赛?
(1):对于一些赛场可能支持Idea,因此,写代码速度可以很快
(2) :如果你是走java后端方向的,那么使用java参加竞赛能更让你熟悉常见的Api方法
(3):java可读性好,java虽然来说代码量比c++更大一点,但是在idea的辅助下,基本实际手敲的代码跟c++不是差很多。
import java.io.*;
public class Main {
static Read read = new Read();
static PrintWriter printWriter = new PrintWriter(System.out);
public static void main(String[] args) throws IOException {
//输入示例
int n= read.nextInt();
//这里输入你的算法代码
//输出示例
printWriter.println(n);
printWriter.flush();//记得最后才调用flush,刷新缓冲区,不然没输出
}
static class Read {
BufferedReader br;
public Read() {
InputStream stream = System.in;
br = new BufferedReader(new InputStreamReader(stream));
}
public int nextInt() throws IOException {
int c = br.read();
while (c <= 32) {
c = br.read();
}
boolean negative = false;
if (c == '-') {
negative = true;
c = br.read();
}
int x = 0;
while (c > 32) {
x = x * 10 + c - '0';
c = br.read();
}
return negative ? -x : x;
}
public long nextLong() throws IOException {
int c = br.read();
while (c <= 32) {
c = br.read();
}
boolean negative = false;
if (c == '-') {
negative = true;
c = br.read();
}
long x = 0;
while (c > 32) {
x = x * 10 + c - '0';
c = br.read();
}
return negative ? -x : x;
}
public String next() throws IOException {
int c = br.read();
while (c <= 32) {
c = br.read();
}
StringBuilder sb = new StringBuilder();
while (c > 32) {
sb.append((char) c);
c = br.read();
}
return sb.toString();
}
public double nextDouble() throws IOException {
return Double.parseDouble(next());
}
}
}
为什么要使用快读?
1.由于一些题目真的很恶心+变态,常常用很大的数据来卡你的代码。
假如你使用普通的输入输出(这里以java的Scanner和System.out.println为例子),很容易出现TLE和RE与ME(内存超出),这是因为数据量太大导致输入炸了,也就是程序抛了异常,这就是Re的原因,而TLE的原因更简单,因为数据量太大,Scanner输入套了一层一层的类,因此输入极其慢,导致程序是正确的算法也还是TLE或者ME
2.快读性能的提升
由于本人比较赖,但是还是测试一些数据
使用java快读的内存消耗量减少了Scanner方法输入的30%左右(保守估计),程序运行速度大概提高了60%左右(注意,作者只是保守估计)