CSP2024-15

A

题意:给定字符集大小 \(m\),求长度为 \(n\) 没有任意一个前缀是回文串的字符串个数。\(n \le 10^7\)

长度为 \(i\) 的回文串个数非常好求:\(c(i) = m^{\lceil\frac{i}{2}\rceil}\)

我们称一个字符串 \(s\)好的当且仅当 \(s\) 是回文串且不存在一个真前缀是好的。

\(f(i)\) 表示长度为 \(i\) 的好的字符串个数。则最后的非法方案数等于 \(\sum_{i = 2}^n f(i) \times m^{n - i}\),这是不重不漏的(以第一次出现的回文串作为代表元)。

如果一个长度为 \(i\) 的回文串含有长度为 \(j\) 的好的前缀,一定有 \(j \le \lceil\dfrac{i}{2}\rceil\)

画个图理解一下,红蓝线分别表示 \(i, j\) 的回文中心,如果 \(j\) 超过红线,则出现"绿黄"回文串,同时在 \(j\) 的左侧出现"黄绿"回文串,与 \(j\) 是好的矛盾。

因此需要减掉所有包含 \(\le\lceil \frac{i}{2}\rceil\) 的好的前缀的情况,\(f(i) = c(i) - \sum\limits_{j = 2}^{\lceil \frac{i}{2}\rceil} f(j) \times m^{\lceil \frac{i}{2}\rceil - j}\)

注:以上所称"回文串"皆不包含长度等于 \(1\) 的情况。submission

B

题意:长度为 \(n\) 的序列,支持区间与,区间或,区间查询最小值。\(n, q \le 5 \times 10^5\)

C

到底什么时候才开始补网络流呢?

D

题意:

posted @ 2024-09-06 17:11  Lu_xZ  阅读(26)  评论(0)    收藏  举报