快速读入

版权声明:转载请注明出处(^_^),http://blog.csdn.net/whistlena https://blog.csdn.net/WhiStLenA/article/details/51712580

在c++中 cin 的读入效率是很低很低的,一般我们可以用scanf,
但有时一些变态题也会TLE,比如noip2011 道路修建,读入数据超大的,
所以我们可以用快速读入(貌似只能读数字TAT……)
输入字符转换成数字,效率高,在输入数据量特别大的时候采用快速读入可以避免超时
当然正负可以保证。

inline int read()
{
    int k=0;
    char f=1;
    char c=getchar();
    for(;!isdigit(c);c=getchar() )
        if(c=='-')
            f=-1;
    for(;isdigit(c);c=getchar() )
        k=k*10+c-'0';
    return k*f;
}

或者还可以这么写

inline int read()
{
    int k=0;
    char f=1;
    char c=getchar();
    while(c>'9'||c<'0')
        if(c=='-')
        {
            f=-1;
            c=getchar();
        }
    while(c<='9'&&c>='0')
    {
        k=k*10+c-'0';
        c=getchar();
    }
    return k*f;
}

其实本质都是一样的。

没有更多推荐了,返回首页