• 总结与心得(持续更新)


    不知道为什么,刚学的算法过了2个月就忘得一干二净,我并没有背代码啊,当时学的时候还刷了好多题来着→_→,我是不是大脑能力严重衰退了。


    动态规划

    单调队列

      一般情况下,${dp}$方程可以搞成这样:${f_i=f_j+t_j+t_i}$,只要其中没有变量同时与${i,j}$都有关,那么我们可以用单调队列来做,单调队列里面元素的关键字就是与${j}$有关的东西${f_j+t_j}$。example:生产产品

      有些比较特殊的,虽然存在同时与${i,j}$相关的函数,但是这个函数比较简单,使得已经存在在单调队列中元素的相对位置不会因此改变,这样的话我们可以打一个全局标记来处理。example:瑰丽的华尔兹

      还有一些比较奇葩的,这已经不属于单调队列优化dp的范畴了。example:cut the sequence

    斜率优化

      想当年我还写过学习笔记,现在毛都不记得了T_T,斜率优化学习笔记。反正套路都差不多,不过我还是更喜欢从函数的角度去理解斜率优化。

      斜率单调。example:特别行动队

      斜率不单调。example:购票

      横坐标不单调。example:货币兑换

    状压dp

      插头。插头还是挺简单的,就是一个板子,随着题目的变化稍微修改一下就好。example:Tony's Tour

      容斥套着,到了考场也不知道会不会做 ╮(╯_╰)╭。example:局部极小值

    数位dp

      写成记忆化搜索的形式会好很多,注意该开LL的时候开LL。example:Balanced Number


    prufer

      prufer序列中每个数出现的次数就是它在树中的度数-1。example:明明的烦恼

      经常用来做树的计数一类dp。

    树分治

      点分治。关键是对答案的统计用什么算法和数据结构进行处理。example:Tree

      有的时候,一定要小心的就是扫把型的树,如果不对子树进行排序,很容易就会被卡掉。example:重建计划

      动态树分治。没什么好说的,也许我没做过什么题。example:开店

      树上CDQ。example:购票

    树链剖分  

      树链剖分的性质(一个点到根节点的路径上的轻变不超过$log$条)可能有些奇技淫巧。

      最简单的维护树上路径修改查询。example:软件包管理器

      dsu on tree。其实就是树链剖分维护启发式合并,在某些情况下特别好写= =。example:天天爱跑步

      长链剖分维护合并跟深度有关的信息。复杂度证明:每次合并的次数是这个节点连出的轻边的点所在的重链的大小,那么每条重链最多只会被记录一次,所以总合并次数是$O(n)$。听说还能$O(n)$求lca。example:坑着

    虚树

      虚树就是只含有查询点以及它们lca的点的树,往往与树形dp一同食用。虚树的题目往往其询问点的总数不会超过某个值,必须要满足在虚树上dp可以降低复杂度。教程?

      example:世界树

    Link Cut Tree

      link的实质是找到父亲,cut时换根是为了搞清楚两点之间的父子关系。带边权的换成点。example:魔法森林

      LCT维护可加减子树信息,如果不是可加减的就只能toptree了。注意在轻重边替换的时候同时更新信息。example:共价大爷游长沙

      ntr的妙用= =。example:CC某题

      一类问题的通用解法,分类维护前缀信息和后缀信息。example:城市旅行


    数据结构

    KDtree

      能不写最好还是不要写吧,轻松被卡→_→,也许可以出奇制胜?如果要写,重新构树是个不错的选择。发现大数据跑不过,多半是剪枝挂了。

      平面上最近(最远)点对。example:SJY摆棋子

      范围内点权查询,暴力重构。example:简单题

      神应用,怒艹一类数据结构题。example:A simple rmq problem

    Splay

      扣区间$[l,r]$的时候,把$l+1$Splay到根,$r+1$Splay到根的右儿子,然而加了“哨兵”,实际上是$l$和$r$。

      rotate和Splay记得要加取地址符。

      对区间操作完后记得pushup父亲和根,pushup的时候size记得+1啊啊啊。

      example:维护数列

    ST表

      好像没什么好说的,一些细节想清楚就好了= =。example:超级钢琴

    treap

      比Splay好写一些树套树方便一些可以持久化。思想还是蛮简单的,随机一个权值保证logn的期望树高。

      非旋转版现在还策不清,如果真的考了可持久化treap那我还是早早弃疗吧=  =。example:普通平衡树

    分块

      通常用来优化暴力。

      树上分块。example:王室联邦

      权值分块。example:dispatching

      优化暴力。example:最小公倍数

      数据有一些特色的,可以分两类:$ > sqrt{n}$和$ < sqrt{n}$,分别处理与复杂度分析,然后基本不等式搞一搞取最优块大小。好像没有什么好的例子。。example:普通计算姬

    可并堆

      好写好调好理解,代码简短。example:disoatching

    链表

      双向链表大法好。example:营业额统计

    启发式合并

      把size小的往size大的里面丢,合并次数$logn$。example:森林

      貌似写过的启发式合并都是直接set了=。=

    树套树

      二维线段树。example:魔幻棋盘

      线段树套treap。example:二逼平衡树

    树状数组

      区间修改。example:poj某题

    线段树

      呵呵,线段树上各种耍杂技=  =。

      维护连通性。example:堵塞的交通

      扫描线结合。example:Picture

      二维线段树。单点修改矩形查询,example:魔幻棋盘;矩形修改单点查询;可以直接标记可持久化,example:树状数组

      蜜汁思路。example:基础数据结构练习题

      线段树合并。example:CF 666E

      超哥线段树。example:robot

      区间取最值操作。example:hdu某题

      历史最值查询。example:CPU监控

      还有个劲(j)爆(b)玩意儿现在都还不懂。example:CF某题

    主席树

      ntr的妙用=  =。example:CC某题

      优化网络流连边。example:a+b problem

      可持久化数组。example:可持久化并查集

      树状数组套主席树。其实是树状数组套权值线段树=  =。


    数学

    BSGS

      用来求解$a^x=b~(mod~p)$,所谓大步小步。可能出现无解的情况。example:板子题

    多项式乘法

      注意数组大小,以及最后除一个$n$。循环卷积注意细节变动。转成整型的时候不要爆了int。板子一套:多项式乘法

      求解字符串匹配问题。example:万径人踪灭

      预处理$ω$加强精度,任意模数FFT,倍增优化dp。所谓倍增优化,就是$f_i$可以由$f_x$和$f_y$推过来($x+y=i$)。example:CF某题

      离散对数NTT,循环卷积,求解原根,倍增优化dp。

      所谓循环卷积,就是在DFT回来统计答案的时候,除了加上对应位置$x$上的卷积结果,还要再加上$x+m-1$位置上的卷积结果。example:序列统计

    博弈论

      当前局面的SG等于后继状态的SG的$mex$,当前游戏的SG等于各个子游戏的SG状态的$xor$。大都是脑洞题,考场上只能看人品了。。

      求解SG函数。example:江南乐

      暴力求解SG,找规律。example:S-NIM

    高斯消元

      模意义高斯消元,其实就是除的时候乘个逆元。example:SETI

      线性基相关。example:XOR

      线性基性质。线性基中每一个可以被异或出来的元素的异或方案数相同(包括0)。example:albus就是要第一个出场

      动态构造线性基。example:元素

    数学相关dp和组合计数

      多推推式子转化一下问题,从不可做变成可做。组合数公式的话大概用格点法推一推?$displaystyle inum{n}{m}$表示从$(0,0)$走到$(n-m,m)$的方案。

      dp期望或者dp概率通过概率算期望。example:亚瑟王

      精度要求不高的,可以估算一下计算的次数。example:CF坦克大战

      异或相关dp的正确AC姿势,虽然没有什么普适性。example:Lights

      二进制相关dp的正确AC姿势。一般先考虑排列方案最后再除个阶乘会好很多。转移的时候考虑到相等的情况,需要容斥一发。example:facer's chocolate dream

    莫比乌斯反演

      $mu[i]$,如果i的某个质因子指数大于$1$,$mu[i]=0$;否则,$mu[i]=(-1)^{i的质因子个数}$

      推式子的时候一定要小心,把一些东西提前的时候不要忘记乘或者除了个什么东西。

      $lfloor n/i floor$,取值相同的$i$的范围为$[i,n/(lfloor n/i floor)]$。

      用来容斥,很棒棒哦。example:完全平方数

      约数个数有一个比较经典的式子。example:约数个数和

      线性筛约数和。离线处理约束条件。example:数表

    欧拉函数

      在线求欧拉函数。example:Longge的问题

      一个公式。example:Robot

      当$n>2$,$φ(n)$是偶数。example:上帝与集合的正确使用方法

    置换

      Burnside:对于一个置换$f$,若存在一个着色方案$s$经过置换后不变,称$s$为$f$的不动点,等价类数目为所有置换的不动点的平均值。example:Cards

      Polya:假设可以有$k$种颜色,那么一个置换$f$的循环内的元素的颜色必须相同,等价类的数目为所有置换的$k^{循环个数}$的平均值。example:Let it bead

      一个是对染色方案考虑,另一个是直接对置换考虑。

    数论大合集

      费马小定理优化矩阵乘法。example:矩阵游戏

      Lucas,费马小定理,中国剩余定理。example:古代猪文

      Lucas用的时候要注意特判$m=0$,同时组合数记得特判$n<m$。模数不是质数的Lucas,就用古代猪文中的方法,分解质因数然后CRT合并。

      exgcd和CRT最好还是用LL运算,不然怎么挂的都不知道=。=

      暴力容斥。example:跳蚤


    字符串

    AC自动机

      没啥好说的。。。板子题:阿狸的打字机

    HASH

      也没啥好说的。。板子题:火星人

    KMP

      还是没啥好说的。。可能会有奇技淫巧吧。板子题:动物园

    manacher

      我已经不记得了。板子题:不知名

    trie

      异或贪心相关。example:poj某题

      trie树合并,跟线段树合并差不多。example:Alice和Bob又在玩游戏

    后缀数组

      基本的论文二分答案+按照height分组的思想。example:milk patterns

      单调栈。example:CS

      后缀自动机求后缀树组。example:板子题

      双向链表。example:生成魔咒

      分割点。example:mrs

    后缀自动机

      


    思想

    CDQ分治

      看起来很强但是很simple的一个玩意儿。

      CDQ图分治。example:城市建设

      CDQ上树+维护斜率优化dp。example:购票(这题出现频率真高=  =)

      一道还不错的题。example:共点圆

      四维偏序。example:偏序

    倍增

      没啥好说的,注意边界细节。

      神题一道。example:会议中心

      倍增优化dp,类似快速幂。example:序列统计

    莫队算法

      莫队还是挺灵活的,各种升级版本都有=  =。

      树上莫队。example:糖果公园

      在线莫队。其实就是预处理出来n个询问,然后每次读入的询问暴力移左右端点。example:坑

      江队。只有插入或者删除的莫队。example:坑

      总之在考场上应该也能YY出来吧,一定要注意常数啊,一个小小的细节可能就葬送AC=。=

    平面图与对偶图

      优化网络流。example:海拔

      抠域和点定位。example:平面图(话说看这毒瘤题真的大丈夫?=  =)

    整体二分

      没啥好说的。example:接水果


    小技巧

      差分求解区间gcd。example:魔幻棋盘

      当答案是这种$ans=a/b$的形式,二分答案是个不错的选择。example:最小圈

      二分$delta$。example:tree

      两个熏肉贪心题。哈夫曼;example:荷马史诗。田忌赛马;example:泡泡堂BNB

      图的hash(话说这真的叫hash吗,反正王队长这么说那我就跟风了=。=)。example:DZY loves Chinese

      弦图。话说这玩意儿真的会考吗。example:神奇的国度

      $O(1)$黑科技double快速乘。如果没记住还是龟速乘吧,写错一点都会GG。example:随机数生成器

  • 相关阅读:
    社交集群 并查集
    run类级别的setup和teardown.py
    run测试用例类的写法.py
    run测试用例与数据库的交互.py
    run测试用例函数写法.py
    Python assert
    使用JDBCTemplate实现与Spring结合,方法公用 ——Emp实现类(EmpDaoImpl)
    使用JDBCTemplate实现与Spring结合,方法公用 ——共用实现类(BaseImpl)
    使用JDBCTemplate实现与Spring结合,方法公用 ——共用实现类(BaseImpl)
    使用JDBCTemplate实现与Spring结合,方法公用 ——接口(BaseDao)
  • 原文地址:https://www.cnblogs.com/MashiroSky/p/6354265.html
Copyright © 2020-2023  润新知