20231108数数与dp题笔记

数数与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?

CF785D Anton and School - 2

统计前缀左括号和后缀右括号个数 对与每个左括号 以它为最后一个左括号的答案数量为

\[\sum\limits^{min(pre_x,suf_x)}_{i=1}\binom{pre_x}{i}\binom{suf_x}{i}=\binom{pre_x+suf_x+1}{pre_x} \]

CF1540B Tree Array

先枚举根节点

枚举两个点 \(x,y(x>y)\) 考虑这两个点产生逆序对的概率,其实等于给定两个长度分别为 \(dep_x-dep_{lca},dep_y-dep_{lca}\) 的序列,每次概率均等的取走一个, 前者在后者之前取完的概率

dp[i][j] 表示长度分别为 \(i,j\) 时的概率

\[dp_{i,j}=\frac{dp_{i-1,j-1}+dp_{i-1,j}}{2} \]

CF1716F Bags with Balls

挖坑待填

CF1437F Emotional Fishermen

最后的序列一定为 \(P_1...P_2...P_3...\)

其中满足 \(P_i\leq P_{i+1}\)

\(a\) 排序以后求出 \(lim_i\) 表示最大的 \(j\) 使得 \(2a_j\leq a_i\)

dp[i] 表示当前 \(i\in P\) 的方案数

\[dp_i=\sum\limits_{j=0}^{lim_i} dp_j\times A_{n-lim_j-2}^{lim_i-lim_j-1} \]

CF1657F Words on Tree

不太理解这为什么被扔数数题里了

考虑每个操作其实是给了每个点两种可能,最后其实是问能不能使所有的点不冲突,明显可以 2-SAT

CF1626F A Random Code Problem

对于每个 \(a_i\) 先对 \(lcm(1,2,\cdots,k-1)\) 取模对答案是没有影响的,因为不会影响余数,即不会影响每次减去的数

于是 \(1\leq a_i \leq 998244353\) 转化为 \(1\leq a_i < 720720\)

dp[i][j] 表示第 \(i\) 轮后,值为 \(j\) 的数的期望个数

\[dp_{i+1,j}\leftarrow dp_{i,j}\times (n-1) \\ dp_{i+1,j-(j\mod{i+1})\leftarrow dp_{i,j}} \]

posted @ 2023-11-08 21:45  xiaruize  阅读(48)  评论(1)    收藏  举报