入队快1年了,看过各种各样的博客,经常看到有人在输入的时候弄得很麻烦,今天我算是弄懂了原来这是优化,getchar的输入速度比scanf要快所以有大量输入数据的时候,想要节省时间,优化输入是个不错的做法。下面给模板
const int read()
{
char ch = getchar();
while (ch<'0' || ch>'9') ch = getchar();
int x = ch - '0';
while ((ch = getchar()) >= '0'&&ch <= '9') x = x * 10 + ch - '0';
return x;
}
输出挂也是有滴!
template <class T>
inline void print_d(T x)
{
if (x > 9)
{
print_d(x / 10);
}
putchar(x % 10 + '0');
}
鉴于多校的一些迷之卡输入,非要用fread(),这里放个超级输入挂
namespace IO {
const int MX = 5e7;
char buf[MX]; int c, sz;
void begin() {
c = 0;
sz = fread(buf, 1, MX, stdin);
}
inline bool read(int &t) {
while(c < sz && buf[c] != '-' && (buf[c] < '0' || buf[c] > '9')) c++;
if(c >= sz) return false;
bool flag = 0; if(buf[c] == '-') flag = 1, c++;
for(t = 0; c < sz && '0' <= buf[c] && buf[c] <= '9'; c++) t = t * 10 + buf[c] - '0';
if(flag) t = -t;
return true;
}
}
IO::begin();
IO::read(n);