快速读入模板

整数快读:

inline bool scan_d( int &num )
{
    char in;
    bool IsN = false;
    if ( in==EOF )
        return false;
    while ( in!='-'&&(in<'0'||in>'9') )
        in = getchar();
    if ( in=='-' )
        IsN = true,num = 0;
    else 
        num = in-'0';
    while ( in=getchar(),in>='0'&&in<='9' )
        num = num*10+in-'0';
    if ( IsN )
        num = -num;
    return true;
}

浮点数快读:

inline bool scan_lf( double &num )
{
    char in;
    double Dec = 0.1;
    bool IsN = false;
    bool IsD = false;
    in = getchar();
    if ( in==EOF )
        return false;
    while ( in!='-'&&in!='.'&&(in<'0'||in>'9') )
        in = getchar();
    if ( in=='-' )
        IsN = true,num = 0;
    else if ( in=='.' )
        IsD = true,num = 0;
    else
        num = in-'0';
    if ( !IsD )
    {
        while ( in=getchar(),in>='0'&&in<='9' )
            num = num*10+in-'0';
    }
    if ( in!='.' )
    {
        if ( IsN )
            num = -num;
        return true;
    }
    else
    {
        while ( in=getchar(),in>='0'&&in<='9' )
            num += Dec*(in-'0'),Dec *= 0.1;
    }
    if ( IsN )
        num = -num;
    return true;
}

读入外挂:(1e7的char数组占内存11000k,看文件大小修改MX)

namespace IO
{
    const int MX = 4e7; 
    char buf[MX];
    int c,sz;
    void Begin()
    {
        c = 0,sz = fread( buf , 1 , MX , stdin );
    }
    inline bool read( int &t )
    {
        while ( c<sz&&buf[c]!='-'&&(buf[c]<'0'||buf[c]>'9') ) c++;
        if ( c>=sz ) return false;
        bool flag = 0;
        if ( buf[c]=='-' )
            flag = 1,c++;
        for ( t=0 ; c<sz&&buf[c]>='0'&&buf[c]<='9' ; c++ )
            t = t*10+buf[c]-'0';
        if ( flag )
            t = -t;
        return true;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值