先做个比较
iostream:最慢
stdio,解绑的iostream:慢
(i<<1)+(i<<3)优化的读入:快
但有时还不够
这时就只能使用fread!
#include <stdio.h>
char Buffer[65536];
int Size,Pos;
bool Empty;
bool GetChar(char& c) {
if(Empty) {
c=0;
return false;
} else if(Size^Pos) {
c=Buffer[Pos++];
return true;
} else {
Size=fread(Buffer,1,65536,stdin);
if(Size) {
Pos=1;
c=Buffer[0];
return true;
} else {
Empty=true;
c=0;
return false;
}
}
}
把这个与一般优化合起来,速度可以优化许多.
另,可以尝试在函数前加
__attribute__((optimize("Ofast")))
不过考试时最好别加…
注意,若开了这个,最好不用(i<<1)+(i<<3)和一些小优化,会反而变慢.