数据范围:
可能爆int,要使用long long或者unsigned long long(_int128我不会使用)
有时候题目数据没有爆int,但是可能在运算的时候爆int
数组定义多大的范围要仔细一点,可能大了就MLE,小了就RE。
数据初始化问题:
有的题目要多组输入,当你使用vector的时候一定要记得把它clear掉,因为很多人习惯把vector定义成全局变量。
防止忘掉初始化问题,建议大家写一个init()函数,把需要初始化的数组,变量或一些数据结构放里面。
O2优化
有的oj没开o2优化,会有各种不必要的卡时问题。比如卡常啥的(实话,我还不知道什么叫卡常,有大佬解释一下么
提供几种加速方法:
1.使用inline,定义内联函数,不开O2优化的话,确实能快很多
2.使用max(),min()等函数会慢,你可以使用if()else来代替max或min的使用,据说使用三目运算符会快更多
3.位运算优化:
x!=-1 => ~x
x*2 => x<<1
x*2+1 => x<<1|1
x/2 => x>>1
x%2 => x&1
x%2==0 => !(x&1)
x&(x-1) => 是否是2的幂次
void change(int &x,int &y){
x^=y^=x^=y;
}
vector不清空也会RE,数组小了会RE,vis[负数]也会RE。int型变量超过int的范围会RE。