读入优化

Posted xuanyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读入优化相关的知识,希望对你有一定的参考价值。

数据流大 \(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;
}

以上是关于读入优化的主要内容,如果未能解决你的问题,请参考以下文章

[读入输出优化]4.15正确的打开方式

读入优化

读入输出优化

奇技淫巧:NOIP的读入优化

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

如何优化C ++代码的以下片段 - 卷中的零交叉