- 第一类斯特林数
f[n][k]=f[n−1][k]∗(n−1)+f[n−1][k−1]
1 | n个不同元素k个不同环,环不空 |
- 第二类斯特林数
f[n][k]=f[n-1][k]*k+f[n-1][k-1]
1 | n个不同元素k个相同集,集不空 |
- 卡特兰数
f[n]=f[n-1]*(4n-2)/(n+1)
f[n]=$C^{2n}_{n}/(n+1)$
1 | n对括号,正确匹配方案数 |
- 01背包
f[i][j]=sum/max/min(f[i-1][j],f[i-1][j-w[k]]+v[k])
- 多重背包
f[i][j]=sum/max/min(f[i-2^p][j],f[i-2^p][j-w[k][p]]+v[k][p])
1 | 把物品二进制拆分成很多个物品,倍增思想 |
- 区间动规
f[i][j]=sum/max/min(f[i][k]+f[k+1][j]+g(i,j))
1 | k为断点,g(i,j)为[i,j]区间相关代价函数 |
- 树形动规
f[i][j]=sum/max/min($\sum_{k∈son_i}f[k][g(j)]$)
1 | g(j)是关于状态j的函数,通常是0/1 |
- 状压动规
f[i][j][k]=sum/max/min($\sum_{p∈S(j)}$f[i-1][p][k-1])
1 | i,j,k:行数,状态,数量 |
- 单调队列优化式
f[i]=min/max$\sum_{j=i-m+1}^{i}$a[j]
1 | 序列中长为m的滑动窗口最值问题 |
- 斜率优化式
f[i]=min{f[j]+(g(i)-g(j))$^2$}
1 | 下标为横,值为纵,构造斜率。 |
- 目前整理内容均比较粗略,后续会进行补充。