UOJ270【清华集训2016】工厂【题答,自动机,构造】

\(10\) 个 Task,要求构造一种"自动机"识别给定的一类字符串,\(\Sigma=[33,126]\cap\N\)

Task 1

用节点表示当前最后一个字符。

Task 2

kmp 自动机板子。

Task 3

比较 sb 的部分分,设 ( 表示 \(1\)) 表示 \(-1\),用节点表示前缀和。

Task 5

用节点表示当前\(\bmod 3\) 余数。

Task 6/7

注意到 Fibonacci 串有些好性质:把 \(f[i]\)\(\texttt{ba}\) 替换为 \(\texttt b\)\(\texttt b\) 替换为 \(\texttt a\) 就得到 \(f[i-1]\)

这时候就要用到蛐蛐了:匹配到 \(\texttt{ba}\) 的时候吐一个 \(\texttt b\),匹配到 \(\texttt{bb}\) 的时候吐一个 \(\texttt a\),吃剩个 \(\texttt a\) 的时候 Accept,吃剩个 \(\texttt b\) 的时候吐一个 \(\texttt a\) 然后重新匹配。

要将各个串分开来,所以要搞个分割符,不是 \(\texttt{ab}\) 就行,不妨设为 \(0\),在起点放一个吐 \(0\) 的蛐蛐然后在纸上画画即可。

Task 10

看上去很吓人,但这东西实际上仍然是一个括号匹配。

\(2\times 101\) 个点,\(x\pod{x\in[1,101]}\) 表示 \(\texttt i\)\(\texttt e\)\(x-1\) 个,\(x+101\) 表示 \(\texttt i\)\(\texttt e\)\(x-1\) 个,且后面多了个 \(\texttt a\)

做不动了,下次一定。

posted @ 2021-06-25 17:38  mizu164  阅读(103)  评论(0编辑  收藏  举报