给你的leetcode submission 提速(C++)

leetcode 的 submission 是收到 IO 速度的影响的……对,没错,尽管和其他 OJ 网站不同, leetcode 给你提供了完备的代码级的接口,它的测试例仍旧是通过 IO 来读取的,真是让人桑心。
明白这一点是因为,我在查看某道题目的最快解时,发现了这么一段代码。平心而论,他的代码并不比我的复杂度要简化多少,然而却比我快10倍以上,我本来百思不得其解,直到我发现了这么一段代码:

static int dividend=[](){
    std::ios::sync_with_stdio(false);
    cin.tie(NULL);
    return 0;
}();

这段代码利用 lambda 表达式完成了在全局作用于定义并且立即执行,而其所做的无非也就是两件事:

  • sync_with_stdio 接口,关闭 std::cinstd::coutscanfprintf 的同步,减少了相当的 IO 开销。
  • cin.tie 接口,完成了 cincout 的解耦,减少了大量 flush 调用。

由此大大提升了 IO 效率,给 submission 一个更漂亮的速度。
然而就算这样,我的提交还是远远比别人慢。
大概这就是人生吧。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 接着上节 condition_varible ,本节主要介绍future的内容,练习代码地址。本文参考http:/...
    jorion阅读 14,849评论 1 5
  • 接着上节 atomic,本节主要介绍condition_varible的内容,练习代码地址。本文参考http://...
    jorion阅读 8,539评论 0 7
  • 浅谈C++常用输入输出 在编写C++程序的时候,经常因为输入输出头疼,所以在这里做一个小结,记录一下常用的输入输出...
    MinoyJet阅读 3,778评论 0 6
  • 1. 流 流:数据从一个对象到另一个对象的传输。 功能:标准输入输出+文件处理 分类含义文本流一串ASCII字符二...
    jdzhangxin阅读 1,445评论 0 4
  • C/C++输入输出流总结 前两天写C++实习作业,突然发现I/O是那么的陌生,打了好长时间的文件都没有打开,今天终...
    LuckTime阅读 1,754评论 0 6