20231108数数与dp题笔记

发布时间 2023-11-09 09:43:44作者: xiaruize

数数与dp

CF294C Shaass and Lights

记被分成的 \(m+1\) 段每一段的长度为 \(l_i\)

答案为

\[\frac{(n-m)!}{\prod\limits_{i=1}^{m+1}l_i!}\times \prod\limits_{i=1}^{m+1}2^{l_i-1} \]

前面是不同段之间的顺序打乱,后面是每一段中前 \(l_i-1\) 个操作各有 \(2\) 个选择

CF1753C Wish I Knew How to Sort

先数有几个 \(0\) 记为 \(cnt\)

在数前 \(cnt\) 个有几个 \(1\) 记为 \(tot\)

答案为

\[\sum\limits_{i=1}^{tot}\frac{n(n-1)}{2i^2} \]

即对于每一对有 \(\frac{n(n-1)}{2}\) 操作,其中有 \(i^2\) 对操作是有效的,即从 \([1,cnt]\) 选一个 \(1\) 与一个 \([cnt+1,n]\) 选一个 \(0\) 交换

CF1657E Star MST

dp[i][j] 表示考虑到第 \(i\) 个点,目前和 \(1\) 相连的最长的边为 \(j\) 的方案数

\(sum_{i,j}=\sum\limits_{k=1}^j{dp_{i,k}}\)

\[dp_{i,j}=\sum\limits_{t=1}^{i-1}sum_{t,j-1}\binom{n-t}{i-t}(k-j+1)^{\frac{(i+t-3)(i-t)}{2}} \]

CF660E Different Subsets For All Tuples

经典套路,转化为求每个可能的串的贡献

发现对于长度相同的串,贡献是一样的,所以考虑怎么求一个定长的串的贡献

设当前考虑的串长为 \(k\) , 最后一个字符的位置为 \(j\)

选择哪些是子串内的有 \(\binom{j-1}{k-1}\) 种方案, \(j\) 之前每个非子串内的字符有 \(m-1\) 种选择,因为不能提前选到下一个字符,\(j\) 之后的字符每个有 \(m\) 种选择

所以总共有

\[\sum\limits_{k=1}^{n}m^k\sum\limits_{j=k}^n\binom{j-1}{k-1}(m-1)^{j-k}m^{k-1} = \sum\limits_{j=0}^{n-1}\sum_{k=0}^jm^{n-j}m^k(m-1)^{j-k}\binom{j}{k} \]

注意到 \(m^k(m-1)^{j-k}\) 是二项式形式,所以原式为

\[\sum\limits_{j=0}^{n-1}m^{n-j}(2m-1)^j \]

暴力计算即可

p.s. 好像最后是个卷积可以FFT?

[Anton and School - 2]