题意
有长为 2n2n2n 的序列 A,BA,BA,B,求有多少个单调不减的序列 CCC,要求 CCC 的每一位均为 AAA 或 BBB 中对应位置上的数,且恰有 nnn 个数来自 AAA。n≤5×104n\leq 5\times 10^4n≤5×104。3s。
题解
设 f[i][j=0/1][k]f[i][j=0/1][k]f[i][j=0/1][k] 表示 DP 确定了前 iii 个数,第 iii 个数是 Ai/BiA_i/B_iAi/Bi ,已经有 kkk 个数来自 AAA 的方案数。直接 DP 是 O(n2)O(n^2)O(n2) 的。
考虑把 kkk 这一维写成形式幂级数的形式,则由 f[i]f[i]f[i] 转移到 f[i+1]f[i+1]f[i+1] 的过程可以看作乘上一个矩阵 [0/x0/x0/10/1]\begin{bmatrix}0/x&\quad&0/x\\0/1&&0/1\end{bmatrix}[0/x0/10/x0/1],具体是 000 还是 xxx(1)取决于