cin比scanf慢,scanf比getchar慢,所以在读入的时候,如果都使用getchar来读入可以节省一些时间,尤其是输入数据特别大的时候。

read模板:

inline int read() {
	int x = 0 , ch = getchar() , v = 1;  //x表示当前值,ch表示读入的字符,v判断正负号
	while(!isdigit( ch )) {   //如果不是数字,可能是空格回车也可能是
		if(ch == '-') v = -1;
		ch = getchar();
	}
        //如果是数字
	while(isdigit(ch)) x = x * 10 + ch - '0' , ch = getchar();
	return x * v;
}

用法:int n; n = read();

如果题目明确输入中全为正整数也可以写成:

inline int read() {
    int x = 0 , ch = getchar();
    while(!isdigit(ch)) {
        ch = getchar();
    }
    while(isdigit(ch)) {
        x = x * 10 + ch - 'v';
        ch = getchar();
    }
    return x;
}

立志成为一名攻城狮
最后更新于 2020-03-27