C++ 算法考试应试指南与 STL 模板精选


一、考试输入输出注意事项

1. 加速输入输出

ios::sync_with_stdio(false);
cin.tie(0);

避免 cin 和 cout 的缓冲绑定,提高性能。

2. 输入格式

  • getline() 读取整行文本时需注意前面是否已用 cin,必要时添加 cin.ignore();
  • 输入如 “1,0,1” 要用字符串处理分割

3. 输出格式

  • 多组数据输出注意控制空格与换行
  • 浮点数输出格式控制:
cout << fixed << setprecision(6) << value;

二、常用 STL 容器和算法

1. 容器概览

容器 特点
vector 动态数组,支持索引
deque 双端队列,支持两端插入删除
stack 栈
queue 队列
priority_queue 默认大顶堆,可设为小顶堆
set / map 红黑树结构,自动排序
unordered_set / unordered_map 哈希结构,常数查找

2. 常用算法函数

sort(v.begin(), v.end());
reverse(v.begin(), v.end());
min(), max(), swap(), abs();
accumulate(v.begin(), v.end(), 0); // 需引入 <numeric>

三、模板与结构建议

1. solve() 结构

void solve() {
    // 单组逻辑
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin >> t;
    while (t--) solve();
}

2. 边界条件检查

  • 输入空数组、全相同值、负数等特殊情况
  • 模运算防负数 (a % mod + mod) % mod

3. 调试技巧

  • 输出边界变量值
  • 手动跑样例定位错误

四、常见算法套路

类型 技巧/模板
前缀和 vector<int> pre(n+1)
双指针 / 滑窗 while (r < n) 控制窗口
二分搜索 lower_bound, 手写 while
并查集 find + union + 路径压缩
堆结构 优先队列(大顶堆/小顶堆)
图遍历 DFS / BFS 标记 + 队列

五、提交前 Checklist

  • 清除调试语句,如 cerr <<
  • 检查 main()、return、头文件完整性
  • 样例输出对比 + 边界值自测
  • 使用 g++ 编译建议加 -std=c++17

六、心态建议

  • 难题先跳过,优先拿稳的分数
  • 模板题型快速展开写法
  • 不要频繁切换题目,保持专注


文章作者: QT
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 QT !
赏
 上一篇
C++ 自定义循环数组类设计与应用解析(CycleArray) C++ 自定义循环数组类设计与应用解析(CycleArray)
本文介绍一个支持动态扩容、双端插入删除的循环数组类 CycleArray 的实现与使用,并深入分析设计背后的区间语义与优化细节。
下一篇 
位运算与循环移位在算法题中的高效应用 位运算与循环移位在算法题中的高效应用
本文深入讲解了如何使用位运算(特别是循环移位)解决最大二进制和类题目,并给出高效的 C++ 实现与优化建议。
  目录