%%%Sparrow
T1:PAM (PWJ AutoMaton)
T1就是求两个字符串有多少个相同子序列传送門
DP:$f[i][j]=(\sum f[u][k]) +1\ u,k为i,j扩展出的子序列$
提到一个新东西,pwj发明的 序列自动机pam
原理很简单,当前位置能扩展出的子序列,取决于后面每个字母第一次出现位置。
自动机的点就是线性的,转移乘上$\alpha$
也就是每个点表示位置,向后面每个字母第一次出现位置连边
代码(map超好实现):
1 |
|
T2:Stirling 斯特林数
原题解在此
把最高的固定,左边A个,右边B个
假设这些能看到的建筑固定,对于每个这样的建筑,它与下一个建筑中的建筑可以任意组合
把每个建筑和它右边这些看做一个大小为k的集合,每个集合有$(k-1)!$种排列
那么它就是一个圆排列,根据题意,我们需要A+B-2个这样的圆排列,根据第一类斯特林数的定义,这样的圆排列有$stirling(n-1.A+B-2)$ 种,我们需要把这些圆排列的A-1个放在左边,有$C(A+B-2,A-1)$种
于是$Ans=stirling(n-1,A+B-2)*C(A+B-2,A-1)$
代码:
1 |
|
T3 主席树
一看就想到了主席树做法,结果写错了。。。
1 |
|