前言
OIER 生涯中大部分时间都是在调题目,但有时候很多题目确实会把我们调崩溃,怎么调也调不出来,这里有一些小建议,可以看一看。
常见
- 记得观察题目范围,开不开
long long - 注意多测清空
高精度
众所周知,高精度代码又美(臭)又短(长),很容易 AC(TLE RE WA MLE),所以我们要更加认真去写(不写了)。
- 高精度为
0的时候不应该是空的,要有一个0 - 高精度的任何计算中出现
0都容易出问题,需要在加减乘除前特判 - 注意
+运算位数不一样的时候要去位数大的,这时候把两个数的同位相加要注意是否有数字 - 注意压位,有些题目用
string会MLE - 压位注意如果
base=9, base_pow=1e9,那么在相乘、相加容易爆long long,要注意开__int128 - 在去除前导零的时候不要用
num.erase(num.end())可以直接pop_back
小优化
string的累加
1 | string s=""; |
等价于下面的代码,并且下面的普遍比上面快:
1 | ostringstream oss; |
或者
1 | s.append("abc"); // s+="abc" |
map
map 的复杂度是 log 级别的,unordered_map 平均 O(1),但是容易被卡,于是可以自定义哈西函数
1 | struct custom_hash { |
--- 本文结束 The End ---