ACM我个菜鸟写题常犯的错误及经验

数据范围:

可能爆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。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值