9.24

[NOIP2020] 字符串匹配

用哈希维护总串中某一段前缀的出现次数,预处理出前缀中出现次数奇数的字符个数和后缀的字符个数,暴力查找后更新求解即可。

[NOIP2020] 移球游戏

用栈模拟球的转移方式,对于每种颜色先构造出一个全零串,利用全零串和空串将剩下每个串的1都提到顶部后转移即可,利用数组模拟指针实现快速swap

Regular Bracket Sequences

暴搜即可。

The Strongest Build

link

Combinatorics Homework

手膜一下就能发现简单的规律进行判断即可。

Slay the Dragon

考虑对原序列进行三分下标求解即可。

染色

考虑容斥
\(f_i\)表示至少有i种==s的方案数,则:

\[f_i=C_{m}^{i}\times C_{n}^{is} \times \frac{(is)!}{(s!)^i} \times (m-i)^{n-is} \]

\(g_i\)表示恰好有i种==s的方案数,由二项式反演,得:

\[g_k=\sum\limits_{i=k}^{lim}(-1)^{i-k}C_{i}^{k}f_i \]

其中lim是最多有几种能够==s,\(lim=min{m,n/s}\)
将C拆开得:

\[g_k=\sum\limits_{i=k}^{lim}(-1)^{i-k}\frac{i!}{(i-k)!k!}f_i \]

\[g_k=\frac{1}{k!}\sum\limits_{i=k}^{lim}\frac{(-1)^{i-k}}{(i-k)!}i!f_i \]

\[G_i=\frac{(-1)^i}{i!} \]

\[F_i=i!f_i \]

则:

\[g_k=\frac{1}{k!}\sum\limits_{i=k}^{lim}G_{i-k}F_i \]

\[g_k=\frac{1}{k!}\sum\limits_{i=0}^{lim-k}G_{i}F_{i+k} \]

\({F}'=F_{lim-i}\)

\[g_k=\frac{1}{k!}\sum\limits_{i=0}^{lim-k}G_{i}{F}'_{lim-i-k} \]

\[{g}'_k=\sum\limits_{i=0}^{k}{F}'_{k-i}G_i \]

则满足卷积形式,可以用ntt求解。

\[g_k=\frac{1}{k!}{g}'_{lim-k} \]

最后乘一个\(w_i\)求和即可。

posted @ 2021-09-24 16:32  letitdown  阅读(95)  评论(1编辑  收藏  举报