美文网首页LeetCode
给你的leetcode submission 提速(C++)

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

作者: cunfate | 来源:发表于2018-03-09 20:15 被阅读54次

    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 一个更漂亮的速度。
    然而就算这样,我的提交还是远远比别人慢。
    大概这就是人生吧。

    相关文章

      网友评论

        本文标题:给你的leetcode submission 提速(C++)

        本文链接:https://www.haomeiwen.com/subject/njbyfftx.html