A
按照题目模拟,代码略。
B
同A
C
对于字符串每一个 CCC,向左右边同时移动同等数量时我们可以构造出满足题目条件的一种字串,对于每个 CCC,计算其左右边最多可以扩展多少格即可。
不要忘了加上形如 C 这类的字串。
D
孩子们直接平衡树平推即可。
代码略,具体请参考平衡树模板。
E
观察题目,可以发现序列不满足条件仅当存在有 111 和 333 相邻,于是我们可以考虑将 222 看做隔板,将数列分成以下形式:
⋯ ,2,⋯ ,2,⋯ ,2,⋯ ,2,⋯ ,2,⋯\cdots,2,\cdots,2,\cdots,2,\cdots,2,\cdots,2,\cdots⋯,2,⋯,2,⋯,2,⋯,2,⋯,2,⋯
然后因为 111 和 333 不能相邻,所以在每一段中要么连续的一段 111 或者连续的一段 333,直接处理过于麻烦,考虑容斥。
显然,要是没有”111 和 333 不能相邻“这个条件,在 x2+1x_2+1x2 +1 个段中插入 111 和 333 的组合分别为 Cx1+x2x1,Cx2+x3x3C_{x_1+x_2}^{x_1},C_{x_2+x_3}^{x_3}Cx1 +x2 x1 ,Cx2 +x3 x3 ,然后我们假设存在 iii 个段有问题,此时存在 Cx2+1iC_{x_2+1}^iCx2 +1i 钟选择问题段的方式,每个问题段至少有一个 111 和一个 333,于是我们在就可以所有问题段中取出 iii 个 111 和 iii 和 333,对于剩下的 x1−ix_1-ix1 −i 个 111 和
x3−ix_3-ix3 −i 个 333 进行重新排列,根据容斥原理,对于 iii 来说,其贡献为:
(−1)iCx2+1i×Cx2+x3−ix3−i×Cx1+x2−ix1−i(-1)^iC_{x_2+1}^i \times C_{x_2+x_3-i}^{x_3-i} \times C_{x_1+x_2-i}^{x_1-i} (−1)iCx2 +1i ×Cx2 +x3 −ix3 −i ×Cx1 +x2 −ix1 −i
所以答案即为:
Ans=(∑0≤i≤min(x2+1,x1,x3)(−1)iCx2+1i×Cx2+x3−ix3−i×Cx1+x2−ix1−i) mod 998244353Ans=\left( \sum_{0 \le i \le \min(x_2+1,x_1,x_3)} (-1)^iC_{x_2+1}^i \times C_{x_2+x_3-i}^{x_3-i} \times C_{x_1+x_2-i}^{x_1-i}\right) \bmod 998244353 Ans= 0≤i≤min(x2 +1,x1 ,x3 )∑ (−1)iCx2 +1i ×Cx2 +x3 −ix3 −i ×Cx1 +x2 −ix1
−i mod998244353
用乘法逆元计算即可,代码略。