数据流大 \(TLE\) 了怎么办?
那就用读入优化,这可比 \(cin\) 和 \(scanf\) 快多了
可以把读入优化当作模板记下来,有一些位运算看不懂没有关系,可以慢慢理解
利用 \(getchar\)
template <typename T>
inline void read(T &x){
x=0; __R char ch; __R bool flg=0;
while (ch=getchar(),ch<48||57<ch) flg^=ch==‘-‘; x=(ch&15);
while (ch=getchar(),47<ch&&ch<58) x=(x<<1)+(x<<3)+(ch&15);
if (flg) x=-x;
}
利用 \(fread\) 将所有的数据读入, \(IN\_LEN\) 就是一次读入的字符数,循环读入
inline char getc(){
static const int IN_LEN=10000000;
static char buf[IN_LEN],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,IN_LEN,stdin),p1==p2)?EOF:*p1++;
}
template <typename T>
inline void read(T &x){
x=0; __R char ch; __R bool flg=0;
while (ch=getc(),ch<48||57<ch) flg^=ch==‘-‘; x=(ch&15);
while (ch=getc(),47<ch&&ch<58) x=(x<<1)+(x<<3)+(ch&15);
if (flg) x=-x;
}