论如何卡常数

· · 个人记录

一、I/O优化:

//读入优化
inline int read()
{
int f=1,x=0;
char s=getchar();
while(s<'0'||s>'9')
{
if(s=='-') f=-1;
s=getchar();
}
while(s>='0'&&s<='9')
x=x*10+s-'0',s=getchar();
return x*f;
}
//输出优化
void write(int x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}

二、函数之前加inline:

介个很重要,可以加快一下函数调用,但只能用于一些操作简单、调用频繁的函数。涉及递归,大号的循环等很复杂的函数,编译器会自动忽略inline。(我不知道强制inline有没有用)。

三、变量之前加register:

介个也很重要,用于把变量放到CPU寄存器中,适用于一些使用频繁的变量(比如循环变量)

四、前置++:

介个具体原理我也不知道,总之酱紫比较快就对了