- 第 83 篇 -
Date: 2025 - 03 - 20
Author: 郑龙浩/仟墨
【竞赛技巧 C++】
竞赛技巧 C++
一、输入输出优化
-
关闭流同步
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
- 关闭C++与C标准库的同步,提升速度
- 此后不可混用
cin/cout
和scanf/printf
-
用
'\n'
替代endl
endl
会强制刷新缓冲区,频繁调用导致性能下降
-
快速读取函数(适用于大规模整数输入)
int read() { int x = 0; char c = getchar(); while (c < '0' || c > '9') c = getchar(); while (c >= '0' && c <= '9') x = x*10 + c-'0', c = getchar(); return x; }
二、其他优化
-
时间复杂度优先
- 优先选择
O(n log n)
或更低复杂度的算法 - 可以提前预处理数据(如前缀和、差分数组)
- 优先选择
-
选择高效容器
unordered_map
替代map
(当可以是无序的时候)- 静态数组替代
vector
之类的,动态不如静态速度快 emplace_back
替代push_back
(减少对象拷贝)- 使用连续内存结构(避免链表)链表什么的不如连续内存结构
-
减少函数调用
过多的使用函数,速度也会变慢,如果可以的话,在比赛的时候可以直接写在main函数里