9.24
[NOIP2020] 字符串匹配
用哈希维护总串中某一段前缀的出现次数,预处理出前缀中出现次数奇数的字符个数和后缀的字符个数,暴力查找后更新求解即可。
[NOIP2020] 移球游戏
用栈模拟球的转移方式,对于每种颜色先构造出一个全零串,利用全零串和空串将剩下每个串的1都提到顶部后转移即可,利用数组模拟指针实现快速swap
Regular Bracket Sequences
暴搜即可。
The Strongest Build
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\)求和即可。
Everything that kills me makes me feel alive.