随机思绪,想到哪写到哪。
部分参考 OI-Wiki 和我自己 UnAC 记录。
Wrong Answer
- 忘开
long long
- 多测不清空
==
误写成=
- 数据不初始化
比如:初始化为正无穷、负无穷、0、1、-1 - 读入字符类型读到了分隔符 / 空格 / 换行
建议:ch = getchar(); while(!<ch is valid>) { ch = getchar(); }
- 二分
mid
爆数据上限
建议:int mid = left + (right - left) / 2
- 位运算符优先级问题
如错误写法:left + (right - left) >> 1
,正确应该用left + ((right - left) >> 1)
- 把
printf
写成scanf
原文如此 - 宏定义缺少括号包裹导致优先级出现问题
- 全局变量被局部变量覆盖导致失效
- 多输出空行
- 浮点数输出 NaN
常见:二分变量ans
未初始化
Runtime Error
- 数组开小
如双向边不开二倍,线段树 / 树状数组不开四倍,二维结构开小 / 开大 - 非
void
函数无返回值(如不开 O2 则可能是 WA) - 除以零
std::sort()
自定义排序函数 / 重载运算符出现冲突
即对于两个元素多次询问返回不同结果,常出现于多关键字排序没写全- 栈 / 队列为空仍尝试弹出
Time Limit Exceeded
for
语句起止条件写错for
变量名互串- 无限 DFS / BFS
- 输入写多一直在等待输入
- 某些操作常数爆炸
Memory Limit Exceeded
- 无限 DFS / 迭代爆栈
- 开大
std:string
数组 - 无限向 STL 容器添加数据
Compile Error
- 与其他标识符重名
常见的有:size
、next
、time
、lock
、data
、left
和right
开作全局数组 INT_MAX
、LLONG_MAX
等需要#include <climit>
见:数值极限 - cppreference.commin()
、max()
两个参数不是同一个数据类型。