数据流大 \(TLE\) 了怎么办?
可以把读入优化当作模板记下来, 有一些位运算看不懂没有关系, 可以慢慢理解
利用 \(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;
- }
读入优化
来源: http://www.bubuko.com/infodetail-2523236.html