浅谈快读与IOS优化问题

经常刷OJ的同学应该都知道优化输入输出的问题,今天就谈一下我对快读和IOS出入优化的一些感受和数据!

首先,快读输入,这个位运算的可以拿去用

int read(){
    int x = 0, f = 1;
    char ch = getchar();
    while(ch < '0' || ch > '9'){
        if (ch == '-')
            f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9'){
        x = (x<<1) + (x<<3) + (ch^48);
        ch = getchar();
    }
    return x * f;
}

第二种IOS优化,看了上面的这个代码,又长又臭的,刷题的时候我也不喜欢打。我比较喜欢用IOS优化;

ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0); 

这个代码短很多,又好记!

两种输入输出优化的数据对比!

既然方法不止一种,那肯定有对比了!

在常见的OJ上,如HDU、牛客竞赛、POJ等

先说牛客竞赛的:

我在牛客上刷题也有一年多了,也踩过输入输出优化的坑

牛客网对IOS优化不太支持,经常是开了优化的,但是输入的时候,还是超时!

例如这道题:传送门

我当时在做这道题的时候,用IOS优化输入,果不其然,TLE了

然后重新搞一份快读上去,AC!

第一点:对IOS优化不太友好,经常还是会出现超时的情况!

第二点:开了IOS优化后,就不要再用printf()了, 牛客也不支持混用(最好都不混用,因为但凡有错,你都不知道错哪里)

在牛客上还是老老实实的用快读吧!

HDU和POJ:

例题:HDU3336

第一: HDU对IOS优化是很好的, 就拿这道题来说! 对比IOS优化和快读优化!

这是IOS优化的

这是快读优化的

 

 什么!!   快读竟然比IOS优化还慢!

相同的题目,相同的数据IOS胜!

像这样子的不止这道题! 所以我在HDU上刷题的时候,一搬都是开IOS优化, 当然也不是说IOS肯定比快读快,.

总结来说: 在HDU上, IOS比快读慢的情况比较少, 有时候是一样的,但是IOS比快读快的比较多,

这就跟牛客又明显的区别了

最后: 在说青岛大学开源OJ, 上面也是支持IOS优化的, 我们学校内网上用的也是这个! 大部分OJ都支持IOS优化,效果也挺好的,但是就是不知道为什么牛客对IOS不太友好!

这里推荐一篇输入优化的博客: 传送门

 

原文地址:https://www.cnblogs.com/Li-ningning/p/14093141.html