读入优化:
原理是 getchar() 读入单个字符比读入整型要快(具体原理我也不懂);
inline int read()
{
int x = 0 , w = 1;
char ch = 0;
while(ch<'0'||ch>'9')
{
if(ch=='-') w = -1;
ch = getchar();
}
while(ch>='0'&&ch<='9')
{
x = (x<<1)+(x<<3)+(ch-'0');
ch = getchar();
}
return x*w;
}
更为通用的读入优化,可以适用于各种类型的读入(其实也不常用);
template<typename T>
inline T read()
{
T x = 0,w = 1;
char ch = 0;
while(ch<'0'||ch>'9')
{
if(ch=='-') w = -1;
ch = getchar();
}
while(ch>='0'&&ch<='9')
{
x = (x<<1)+(x<<3)+(ch-'0');
ch = getchar();
}
return x*w;
}
输出优化:
众所周知putchar(),单个输出一个字符也要比输出整型快(我还是不知道为什么。。。)
因为大多数人都说递归较慢,所以我们写栈实现的;
inline void write(int x)
{
if(x<0) x=-x , putchar('-');
static int sta[35];
int top = 0;
do{
sta[top++] = x % 10 , x /= 10;
}while(x);
while(top) putchar(sta[--top]+'0');
}
通用版本和读入的就差不多了,记得调大栈。
OK,更新完成,2019 rp++;