ARC131F ARC Stamp
我们令一次这样的操作称为一次敲章。先考虑如果纯靠敲章能做到什么程度。
考虑定义一个连续段的形式为 \((\text{AR/R})^{x}\text{ARC}(\text{RC/C})^y\),那么将 \(S\) 划分为若干个连续段,连续段间要么由一个 \(R\) 相连,要么由一段空/无法修改的段相连。
容易发现这样的分解是唯一的。
暴力分解之后 DP,\(f_{i,j,0/1/2}\) 表示考虑 \([1,i]\) 段,用了 \(j\) 步操作,当前段没敲章/连续的敲章仍未结束/敲了且已结束(有中间的 \(R\) 也算在仍未结束)。那么有以下几类转移:
-
当前元素为 ARC,那么可以敲下这段的第一个章(\(0\to 1\)),也可以结束这段的敲章(\(0/1\to 2\)),也可以延续这段的敲章(\(1\to 1\)),也可以延续这段的不敲章(\(0\to 0\))。注意前三种情况都是要让操作多一次。
-
当前元素为 AR/A,那么可以延续不敲章(\(0/2\to 0\)),也可以敲下第一个章(\(0/1/2\to 1\))。
-
当前元素为 RC/C,那么可以延续状态(\(x\to x\)),也可以结束敲章(\(1\to 2\))。
-
当前元素为空/不可操作,那么只能 \(2\to 0\) 或 \(0\to 0\)。
-
当前元素为夹在中间的 R,那么可以选择不敲章(\(0/2\to 0\)),或者延续敲章(\(1\to 1\))。
讨论一下各类转移的转移系数即可。