关于加速加速 cin /coutios::sync_with_stdio(false);默认情况下C 的cin/cout和 C 的scanf/printf是同步绑定的。同步 每次读写都要两边同步速度慢。false关掉这个同步cin和scanf不再共享缓冲区速度大幅提升。⚠️ 关掉之后不要混用 cin 和 scanf、cout 和 printf会输出乱序。cin.tie(nullptr);默认cin绑定到cout。每次cin x的时候会先刷新 cout 的缓冲区保证输出先打印出来。tie(nullptr)把 cin 和 cout 解绑。不再每次读入都刷新输出减少开销继续提速。nullptr 是空指针C11 及以后老版本可以写cin.tie(0)。完整示例#include iostream using namespace std; int main() { // 放在main最前面 ios::sync_with_stdio(false); cin.tie(nullptr); int a, b; cin a b; cout a b endl; return 0; }做算法题输入数据量很大的时候上万、几十万组数据。 不写cin很慢直接超时 TLE。 写了速度接近scanf。ios::sync_with_stdio(false)之后不能同时用 cin 和 scanf输出顺序会乱。endl会强制刷新缓冲区比较耗性能提速代码搭配下优先用\n代替endl。cout a b \n; // 推荐更快 // cout a b endl; // 不推荐频繁刷新慢这两行只对cin/cout生效对scanf/printf没有影响。关闭 C/CIO 同步解绑 cin 和 cout加快 cin、cout 读写速度防止大数据超时。C 的 vector 动态数组这是C 的 vector 动态数组在vector头文件里刷题超级常用。vectorint存储 int 类型的动态数组nums是变量名(n)代表创建的时候直接开 n 个位置。vectorint nums(n);✅ 创建一个叫nums的 vector初始大小是 n里面每个元素默认初始化为0。举个例子vectorint nums(5);数组长度 5内容[0, 0, 0, 0, 0]vectorint nums(n, 10);开 n 个空间全部初始化为10vectorint nums(3,7)→[7,7,7]头文件#include vector using namespace std; // 刷题常用不然要写 std::vector完整小例子#include iostream #include vector using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin n; vectorint nums(n); // 开辟n个int默认0 for(int i 0; i n; i){ cin nums[i]; // 像普通数组一样读取 } for(int i 0; i n; i){ cout nums[i] \n; } return 0; }更多用法vectorint v; // 空vector长度0 v.size(); // 返回当前元素个数相当于数组长度 v.push_back(5); // 在末尾追加元素5自动扩容 v.pop_back(); // 删除末尾元素 v.clear(); // 清空所有元素size变成0 v.empty(); // 判断是否为空空返回true v[0] // 和数组一样下标访问不检查越界⚠️ 区分两个容易搞混写法vectorint nums(n); // 方案1直接创建n个元素sizen可以直接nums[i]赋值 vectorint nums; // 方案2空vectorsize0不能直接nums[i]只能push_back添加❌ 错误示例vectorint nums; nums[0] 1; // 不行现在size是0下标0不存在越界和普通数组int a[n]的区别int a[n]变长数组C 标准不推荐栈空间有限n 太大容易栈溢出vectorint nums(n)在堆上分配内存n 可以很大算法题首选程序安全支持自动扩容问vectorint nums(n)初始化后里面元素值是什么答默认值初始化int 类型默认是 0。