300iq contest1 K.Knowledge
复制标题的时候才发现这一场题目首字母和编号相同诶
Description
给出一个字符串 \(s\),每次可以在任意位置增删aa
,bbb
,ababab
,问能形成多少种不同的长度为 \(L\) 的串。
Solution
又是手建自动机的神仙题!
这个操作显然是可逆的,故考虑把每个串表示成等价的最短的串。
手玩一下,发现只有 \(12\) 种本质不同的最短的串。
然后手玩一下这些转移,只有 \(24\) 种很快就出来了。
\[\begin{align*}
\emptyset\stackrel a{\longrightarrow}a & & \emptyset\stackrel b{\longrightarrow}b \\
a\stackrel a{\longrightarrow}\emptyset & & a\stackrel b{\longrightarrow}ab \\
b\stackrel a{\longrightarrow}ba & & b\stackrel b{\longrightarrow}bb \\
ab\stackrel a{\longrightarrow}aba & & ab\stackrel b{\longrightarrow}abb \\
ba\stackrel a{\longrightarrow}b & & ba\stackrel b{\longrightarrow}bab \\
bb\stackrel a{\longrightarrow}bba & & bb\stackrel b{\longrightarrow}\emptyset \\
aba\stackrel a{\longrightarrow}ab & & aba\stackrel b{\longrightarrow}bba \\
abb\stackrel a{\longrightarrow}bab & & abb\stackrel b{\longrightarrow}a \\
bab\stackrel a{\longrightarrow}abb & & bab\stackrel b{\longrightarrow}babb \\
bba\stackrel a{\longrightarrow}bb & & bba\stackrel b{\longrightarrow}bbab \\
babb\stackrel a{\longrightarrow}bbab & & babb\stackrel b{\longrightarrow}ba \\
bbab\stackrel a{\longrightarrow}babb & & bbab\stackrel b{\longrightarrow}aba \\
\end{align*}
\]
弄出这个以后转移用矩阵加速就可以了。
SV:你看这只是一个正四面体的旋转群(\(12\) 阶),下次我出一个正二十面体的旋转群(\(60\) 阶)看你怎么手模(毒瘤!)。