1. C++ 万能头文件
#include <bits/stdc++.h> // 包含所有的常用库
2. IO 流优化
我们知道 scanf 和 printf 的速度通常快于 cin 和 cout,因为 cin 和 cout 需要自行判断类型。关闭流同步可以提升速度:
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
3. 数组内存管理
- 全局变量:建议在 main 函数外面定义大数组。全局数组在静态存储区,上限较大。
- 局部变量:在 main 函数内开大数组可能导致栈溢出(stack overflow)。
- 计算内存:
int a[1000000]大约占用 4MB,开几个 10^6 的数组没问题,但 10^8 可能会 MLE(内存超限)。
4. 数据类型选择
建议在定义变量时优先使用 long long 防止整数溢出。
5. 浮点数精度处理
如果题目要求输出小数,请使用 double 而非 float。
6. STL 容器详解
6.1 Vector(动态数组)
vector 本质是一个动态数组,相比普通数组:
- 无需预先指定固定大小,可根据需要自动扩容。
- 支持随机访问(用
[]访问,时间复杂度 O(1))。 - 尾部增删元素效率高(O(1)),中间增删效率低(O(n))。
初始化方式
// 1. 空 vector
vector<int> vec1;
// 2. 初始化 n 个元素,每个值为 val(默认 0)
vector<int> vec2(5); // 5 个 int,值为 0
vector<int> vec3(5, 3); // 5 个 int,值都为 3
// 3. 用已有数组/vector 初始化
int arr[] = {, , , , };
;
;
vector<> vec6 = {, , , , };

