不知道为何,刚学的算法过了2个月就忘得一干二净,我并无背代码啊,当时学的时候还刷了好多题来着→_→,我是否是大脑能力严重衰退了。html
通常状况下,${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:特别行动队ide
斜率不单调。example:购票函数
横坐标不单调。example:货币兑换post
插头。插头仍是挺简单的,就是一个板子,随着题目的变化稍微修改一下就好。example:Tony's Tour学习
容斥套着,到了考场也不知道会不会作 ╮(╯_╰)╭。example:局部极小值大数据
写成记忆化搜索的形式会好不少,注意该开LL的时候开LL。example:Balanced Number
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时换根是为了搞清楚两点之间的父子关系。带边权的换成点。example:魔法森林
LCT维护可加减子树信息,若是不是可加减的就只能toptree了。注意在轻重边替换的时候同时更新信息。example:共价大爷游长沙
ntr的妙用= =。example:CC某题
一类问题的通用解法,分类维护前缀信息和后缀信息。example:城市旅行
能不写最好仍是不要写吧,轻松被卡→_→,也许能够出奇制胜?若是要写,从新构树是个不错的选择。发现大数据跑不过,多半是剪枝挂了。
平面上最近(最远)点对。example:SJY摆棋子
范围内点权查询,暴力重构。example:简单题
神应用,怒艹一类数据结构题。example:A simple rmq problem
扣区间$[l,r]$的时候,把$l+1$Splay到根,$r+1$Splay到根的右儿子,然而加了“哨兵”,其实是$l$和$r$。
rotate和Splay记得要加取地址符。
对区间操做完后记得pushup父亲和根,pushup的时候size记得+1啊啊啊。
example:维护数列
好像没什么好说的,一些细节想清楚就行了= =。example:超级钢琴
比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:可持久化并查集
树状数组套主席树。实际上是树状数组套权值线段树= =。
用来求解$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:元素
多推推式子转化一下问题,从不可作变成可作。组合数公式的话大概用格点法推一推?$\displaystyle \binum{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 \rfloor$,取值相同的$i$的范围为$[i,n/(\lfloor n/i \rfloor)]$。
用来容斥,很棒棒哦。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:跳蚤
没啥好说的。。。板子题:阿狸的打字机
也没啥好说的。。板子题:火星人
仍是没啥好说的。。可能会有奇技淫巧吧。板子题:动物园
我已经不记得了。板子题:不知名
异或贪心相关。example:poj某题
trie树合并,跟线段树合并差很少。example:Alice和Bob又在玩游戏
基本的论文二分答案+按照height分组的思想。example:milk patterns
单调栈。example:CS
后缀自动机求后缀树组。example:板子题
双向链表。example:生成魔咒
分割点。example:mrs
看起来很强可是很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:随机数生成器