很简单!
因为……(你们知道)所以……(你们懂的)
废话少说,上代码!
解释两句话:
1. ios::sync_with_stdio(false);
含义
关闭 C++ 的 cin/cout 和 C 语言的 scanf/printf 的同步绑定。
原理
默认情况下,C++ 标准流和 C 标准输入输出流是同步的,目的是混用 cin 和 scanf 时输出顺序不乱。
但同步会带来巨大性能开销,读大量数据(比如 1000×1000 矩阵)会很慢,甚至超时。
关闭同步后,cin / cout 速度大幅提升,接近 scanf/printf。
注意
关闭后不能同时混用 cin 和 scanf、cout 和 printf,否则输出顺序错乱。做题只用一套输入输出就完全没问题。
2. cin.tie(0);
含义
解绑 cin 和 cout。
默认行为
默认 cin.tie(&cout):每次执行 cin >> x 读取数据前,会自动刷新缓冲区,把所有待输出的 cout 内容先打印到屏幕。
频繁读写时,反复刷新缓冲区非常耗时间。
cin.tie(nullptr) / cin.tie(0) 都是切断两者绑定,读入时不再强制刷新输出,进一步提速。
组合效果(做题必备)
只在主函数开头加这两行,针对大数据矩阵、多组输入场景,防止 cin,cout 超时。