关于快读
  • 板块学术版
  • 楼主Hooch
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/6/5 23:19
  • 上次更新2023/10/27 23:54:02
查看原帖
关于快读
377787
Hooch楼主2022/6/5 23:19

我之前看见一个巨佬在用下面这种不用 getchar() 的快读:

char buffer[Buffer_Size], *ihead = buffer + Buffer_Size, *itail = ihead;
	inline char Next_Char() {
		if (ihead == itail) fread(buffer, 1, Buffer_Size, stdin), ihead = buffer;
		return *ihead++;
	}
	inline void read(int &x) {
		x = 0; char ch = Next_Char(); int f = 1;
		while (!isdigit(ch)) f -= (ch == '-') << 1, ch = Next_Char();
		while (isdigit(ch)) x = (x << 1) + (x << 3) + (ch & 15), ch = Next_Char();
		x *= f;
	}

虽然这种快读优化非常不错,但是这种快读有的时候会发生玄学的错误。

比如很久以前有道 龙虎斗 就卡了我整整一页提交,然后现在的 任务安排 在 acwing 上过不了,改成 cin 就 A 了。

请问这种快读什么时候会错,该怎么避免或者解决。

2022/6/5 23:19
加载中...