代码低级错误总结

1、lca预处理dfs中,1~20顺序枚举,而非倒序。

void dfs(int x,int fa){/** f,dep */
    f[0][x]=fa;d[x]=d[fa]+1;
    for(int i=18;i>=0;--i)f[i][x]=f[i-1][f[i-1][x]];
    qxs(){dfs(v,x);}
}
View Code
void dfs(int x,int fa){/** f,dep */
    f[0][x]=fa;d[x]=d[fa]+1;
    F(i,1,18)f[i][x]=f[i-1][f[i-1][x]];
    qxs(){dfs(v,x);}
}
View Code

2、线段树忘记下传懒标记

3、三目运算符优先级很低,?,:左右要加括号。下面代码中不加括号的话0和ask会连起来,作为上一个“:”后面的语句。

(l<=z?ask(x<<1,l,r):0)+(r>z?ask(x<<1|1,l,r):0);
View Code

4、判断了节点在子树内部,在字数外面,还要判断是他自己。

猜你喜欢

转载自www.cnblogs.com/seamtn/p/11586873.html