程序的读入、输出时间也计入运行时间,而这些操作无法避免。C++ 风格的 cin 、cout 自然情况下比 C 风格的 scanf、printf 慢很多,一部分原因是 C++ 的流式输入输出为了兼容 C 风格的 scanf、printf 牺牲的效率。我们可以通过「关闭同步」操作,把 cin、cout 加速到接近 scanf、printf 的水平。
只需在主函数加入两句代码:
int main() {ios::sync_with_stdio(false);cin.tie(0);return 0;}
在输入输出规模较大时,强烈建议使用。
在 ACM 比赛中,存在一类「输入输出外挂」,它们是通过合法代码(例如 getchar())等方案,追求读入和输出效率极致的模板。这实际上属于「卡常数」(优化代码时间复杂度的常数项)技术,属于一类竞赛的专门技术。读者可凭兴趣了解。
扩展阅读:探究算法竞赛中的输入输出效率
