易错警示

1:位运算的优先级是真的不行。甚至比大于号,小于号,等于号还要低。所以用到位运算,别管程序美不美,直接小括号括起来!!!!

2:long long 类型 和 int 类型比较大小会出锅的。建议转到同一类型比较。

3:对于模数非常大的情况下,快速幂有可能会爆炸long long。(p^2 >1e18)。这里就需要用到O(1)快速乘

typedef long long LL;
typedef long double LDB;
inline LL mul(LL a, LL b, LL p) {
	return ((a * b - (LL)((LDB)a * b / p) * p) % p + p) % p;
}

4:注意c++里面数组下标可以为负,但是只有一小段是正常的。所以有的时候数组越界不会RE,会带来WA等错误。所以一定要弄清楚下标的范围,不能偷懒。

5:注意乘的时候不要爆炸int/ long long了。

6:位运算也要注意不要爆int。比如1<<50是错误的。应为1LL<<50。

7:如果数组开的刚好越界一点点,可能会出现undefined behaviour,会导致数组的顺序定义不一样,结果不一样的情况。要避免。

8:网络流建模的时候,边表要开的足够大。因为可能会有很多额外的边~。

9:注意图是否联通,是否存在重边和自环。

10:树剖向上跳的时候,是判断dep[top[x]]和dep[top[y]]才决定是否交换。因为x,y都跳到了fa[top[x]]或fa[top[y]]。

while (top[x] != top[y]) {
        if (dep[top[x]] < dep[top[y]]) swap(x, y);//att
        query2(1, dfn[ top[x] ], dfn[x]);
        x = f[ top[x] ];
    }
    if (dep[x] < dep[y]) swap(x, y);
    query2(1, dfn[y], dfn[x]);

11:FFT的空间是 3 ∗ ( n + m ) 3*(n+m) 3(n+m),不然会RE。

12:写 i f if if底下多个语句的时候要注意括号是否括到位,不括的话只会包含一条语句。
(如bzoj4025的4发WA)

13:一定要死扣数据范围,出题人有可能出出来那些让你RE的,但是常理容易得到的数据。往往就在一个取不取等的问题上导致大锅。(bzoj4025头两发RE)

14:c++自带的math库里面。log2(x)是以二为底取对数,log(x)是以e(2.71828)位底取对数

15:long double 的使用。读入应该用$Lf读入,输出应该用%Lf输出,或者可以转化成double 类型输出。具体原因是因为%f只处理4个字节,%lf处理8个字节,%Lf处理12个字节。如果没有配套使用的话,就有可能会出现RE的情况。

16: n ∗ 2 n*2 n2 n &lt; &lt; 1 n&lt;&lt;1 n<<1,而不是 1 &lt; &lt; n 1&lt;&lt;n 1<<n。这种智障错误一般出现在分心的时候。

17: e x i t ( 0 ) exit(0) exit(0)可以在程序的任何一个地方关闭文件并退出程序。返回值为0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值