Java竞赛快速模板

文章讨论了为何在算法竞赛中仍然有人选择使用Java,包括Idea的支持提高编码速度,熟悉后端API,以及Java代码的可读性。此外,文章强调了使用快读技术的原因,如提高性能以避免因大数据输入导致的TLE或内存超出问题,并且提供了快读实现的代码示例。
摘要由CSDN通过智能技术生成

(话说,都什么年代了,谁特么还用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%左右(注意,作者只是保守估计)

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值