• 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

    序列$splay$

    1.$getrank$函数要$push$

    2.$revolve$操作注意模一下

    3.静态查错!不要把变量名打错了(尤其是都是三个字母的情况)

    莫队

    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$标记,然后把信息下传

    线性筛

    1.记得标记$vis$

    2.$varphileft(i ight)=1$,$i$为质数

    3.推积性函数线筛法:考虑某个质因子增大1会发生什么

    莫比乌斯反演

    1.两条式子记住,更换枚举方式的时候注意各个函数和值,是分数还是整数的那一项

    2.数据大用杜教筛

    杜教筛

    1.数论分块记得$i=j+1$,不是$i++$

    2.$map$复杂度一般够用

    3.注意$long long$

    主席树

    1.新树里面有旧的节点的时候(叶节点,因为写法问题)要加上旧节点的信息(所有的!)

    2.合并的时候要注意当前节点是叶节点的情况(用$update$函数的写法)(来自zkw的教导%%%)

  • 相关阅读:
    CF1066D Boxes Packing
    luogu P2508 [HAOI2008]圆上的整点
    luogu P2502 [HAOI2006]旅行
    luogu P2511 [HAOI2008]木棍分割
    luogu P4161 [SCOI2009]游戏
    luogu P4160 [SCOI2009]生日快乐
    windows2012系统IE浏览器无法打开加载flashplayer内容
    kvm虚拟机相关
    esxI开启虚拟化
    Termux 详细安装
  • 原文地址:https://www.cnblogs.com/dedicatus545/p/8947374.html
Copyright © 2020-2023  润新知