浅谈快读与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不太友好!
这里推荐一篇输入优化的博客: 传送门
赞 (0)