码迷,mamicode.com
首页 > 其他好文 > 详细

BUG全集(我遇到的)

时间:2019-08-12 01:03:35      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:区间修改   维护   kth   初始   重复   isp   down   初始化   pre   

BUG全集

写给自己看的 每次代码容易出问题,有的时候还是重复的,想写很久了 这次来更,为了以后写题少一些bug,多一些时间想正解!

  1. dfs
    首先dfs不要写傻了 有一道题比方说要选n个步骤 每个步骤有3种 是对一个数列进行不同的修改,这时候一边选步骤,一边修改,是比选完n个步骤再一次性修改要快的。

    其次,如果每次要带一个参数的话,设为p,如果在void dfs里做出了 s=p,s....
    dfs(s)的情况,s必须开在void里,开在全局变量会导致出错

    参数不要带错了,回溯的话记得清数组和变量

    有多个dfs的时候,不要写错dfs的名字了,记得区分

2、bfs
bfs似乎没什么 q.front()之后记得及时pop

3、线段树
build,update,query之后记得pushup,单点修改,区间修改,询问的时候记得pushdown
如果是树上维护最大子段和之类 记得考虑要不要反过来
树剖的时候不要update错了 记得脑补一下LCA的板子和跳链的情景

4、splay
\[Splay·一生之敌\]
草每次splay的题都要写/调一天 好烦的啊啊啊啊啊

inline int kth(int rt,int k){
int x=rt;
while (1){
    //printf("x=%d rc=%d\n",x,rc);
    if (siz[lc]>=k) x=lc;
        else if (siz[lc]+1<k) k-=siz[lc]+1,x=rc;
            else break;
}
splay(x);
return x;

}

注意k-=siz[lc]+1这里 必须k先减掉 x再=rc 不然直接gg了
rotate和splay的东西记得不要写错/笔误 不然很难查

5、二分
合法的时候用ans=mid记一下
cmp的时候一定要用到mid 一般是把mid当做条件 看原问题条件是否得到满足
不要把l=mid+1 ,r=mid-1这两种情况写反了

6、数组及时清0 变量也是 初始化很重要
\[PS::数组不要开太大 不然memset很卡\]

7、注意\(longlong\)!!!!!!!

8、反演的时候推式子要注意 不要瞎几把推 注意卷积

9、线筛的时候初值 一般积性函数\(f(1)=1\)都是成立的

10、\(i,j\)这个不要写错。。。

暂时没想到别的 先这样

BUG全集(我遇到的)

标签:区间修改   维护   kth   初始   重复   isp   down   初始化   pre   

原文地址:https://www.cnblogs.com/ugly-CYW-lyr-ddd/p/11337267.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!