动态规划 - 动态 DP
动态 DP 是一种带修求 DP 值的技术,通过广义矩阵乘法维护各 DP 值之间的关系,然后修改的时候修改转移矩阵即可达到带修求 DP 值的目的,可以结合树剖将树上的某些 DP 转化成重儿子和轻儿子之间的转化,然后用树剖线段树维护广义矩阵之积。
数据结构 - 线段树合并
线段树合并指建立一棵新的线段树,每个节点都是原来两棵树对应结点的合并后的结果,常与树上差分或者树形 DP 一起使用,用于维护每个点有多个信息,并且需要合并之后求最大值或者某些线段树支持的操作。
微积分 - 由最短时间原理推导折射定律
从最短时间原理出发,用导数值为零列方程,推导出折射定律中折射率等于速度之比的公式。
数据结构 - 可持久化
可持久化数据结构包括可持久化数组,可持久化并查集,可持久化线段树,都是以复用现有结点的思想记录各个历史版本,从而做到在较低的空间复杂度储存每一次修改后数据结构中的数据。
数学 - 矩阵
矩阵乘法是可以用来描述线性递推的一种技术,并且矩阵乘法具有结合律,因此我们可以进行快速幂操作,从而快速地求出知道递推数列某一项的值。除此之外,矩阵也可以描述一些变量之间的线性关系,观察到相互影响的线性关系的变量就可以考虑能否使用矩阵进行优化。
图论 - 最小生成树例题
最小生成树例题练习,主要看如何将问题转化成最小生成树的模型,然后进行求解。
数学 - 康托展开
康托展开是对排列的完美哈希,其值为一个排列在字典序中的排行,通过树状数组进行优化后可以在 O(n log n) 的复杂度对一个排列康托展开。
杂项 - 挂分合集
整理一下遇到的各种各样奇葩的问题,和一些令人智熄的迷惑操作。
数据结构 - 单调栈
单调栈是一种在线性复杂度内求解「左右第一个比某个数大」的元素的方式,与单调队列类似,都是将不可能作为答案的元素去掉来进行优化的思想。
数学 - 同余最短路
同余最短路是用最短路的方式求解「用若干个整数凑出其它整数」这一问题,可以看做类似于背包问题的一种 DP,但是需要用到最短路求解。