GDOI2018前夕 错误总结

算法易错点

$FFT$

1.注意精度,以及是否取整

2.注意$complex$类不要写错,复数乘法是这样的:

complex operator *(const complex &b){return complex(x*b.x-y*b.y,x*b.y+y*b.x);}

splay

1.注意$get$写法

bool get(int pos){return ch[fa[pos]][1]==pos;}

2.注意rotate中son的写法,不要写错

void rotate(int pos){
    int f=fa[pos],ff=fa[f],son=get(pos);
//  cout<<"rotate "<<pos<<ends<<f<<ends<<ff<<ends<<son<<ends<<ch[pos][son^1]<<ends<<ch[pos][son]<<endl;
    ch[f][son]=ch[pos][son^1];
    if(ch[f][son]) fa[ch[f][son]]=f;
    fa[f]=pos;ch[pos][son^1]=f;
    fa[pos]=ff;
    if(ff) ch[ff][ch[ff][1]==f]=pos;
//  cout<<"finish rotate "<<ch[pos][son^1]<<ends<<ch[f][son]<<ends<<ch[f][son^1]<<ends<<fa[f]<<endl;
    update(f);update(pos);
}

3.insert函数执行过程中siz+1

莫队

1.注意卡一卡分块,像0.5,0.6,0.666666,0.7之类的都试一试

2.树上莫队可以把add和del合并,back和update合并(其实普通莫队也可以)

3.莫队真的可以过$1e5$的数据!!!

$KMP$

1.注意$fail$的意义:从1开始,表示长度

2.$getfail$写成函数更好

3.可以想想$fail$树

$AC$自动机

1.注意$getfail$的写法!!!仔细检查

2.$dp$的时候数组别开反了

3.各种空间开够,包括$bfs$队列、$AC$自动机本题,$dp$

4.如果直接暴跳$fail$有可能被卡掉,可以加$vis$标记,然后把信息下传

猜你喜欢

转载自www.cnblogs.com/dedicatus545/p/8947374.html