OI中C++常数问题及其优化

转载请说明出处:http://blog.csdn.net/leader_one/article/details/78430083

首先

常数是个谜,卡常是件很烦的事,被常数坑死的OIer已经不少了
常数不可避免,但是可以理性地去优化
当时间复杂度已经难以优化时,考虑常数优化


C++一些常数常见坑

I/O读入和输出
如果量小倒也没什么,如果大规模读入或者输出,C++自带的方式是很慢的
->首先,拒绝cin/cout,实在是太慢了,受不了
->接着scanf/printf,较慢,中小规模是可以的,但是百万级的I/O常数影响就大了
->所以考虑读入输出优化,百万级的I/O可以和scanf/printf相差0.X秒,和cin/cout则有几秒差距
以int类型为例

inline int read()
{
    int X=0,w=1; char ch=0;
    while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}
    while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();
    return X*w;
}

这是读入,利用getchar()来进行字符读入是比较快的

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值