ICPC/CCPC 冲 !
关于输入输出效率问题
ios::sync_with_stdio(0); cin.tie(0), cout.tie(0);
- 经代码经验发现,部分代码在提交时(编写代码思路相同),使用
printf(), scanf()
, 可以AC , 而使用cin cout
Time Limit
知识点一:
std::ios::sync_with_stdio(false);
cin,cout
之所以效率低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而这段语句可以来打消iostream
的输入 输出缓存,可以节省许多时间,使效率与scanf与printf相差无几,还有应注意的是scanf与printf使用的头文件应是stdio.h而不是 iostream。
知识点二:
sync_with_stdio
-
这个函数是一个“是否兼容stdio”的开关,C++为了兼容C,保证程序在使用了std::printf和std::cout的时候不发生混乱,将输出流绑到了一起。
-
在默认的情况下
cin
绑定的是cout
,每次执行<<
操作符的时候都要调用flush
,这样会增加IO负担。可以通过tie(0)(0表示NULL)
来解除cin与cout的绑定,进一步加快执行效率。
万能头文件
#include<bits/stdc++.h>
等价于如下文件
1 #include <iostream>
2 #include <cstdio>
3 #include <fstream>
4 #include <algorithm>
5 #include <cmath>
6 #include <deque>
7 #include <vector>
8 #include <queue>
9 #include <string>
10 #include <cstring>
11 #include <map>
12 #include <stack>
13 #include <set>