CF2237D Fullmetal Bitchemist 题解

CF原题

洛谷原题

在操作,变换的题目中,我们可以尝试发掘不变的量,可以是量本身,也可以是量关于取模的结果

对于不变量的发掘,可以从多个角度.例如从相同性质/类型中挖掘,或者从一个具体的数据的操作和变换中发掘

思考

根据上文,我们考虑挖掘不变的量.

我们已知可以通过发现不变的量来入手.

我们观察一个合法的美丽序列到长度为1的序列的变换过程

我们从序列中\(0/1\)的个数入手,分别记作\(C_0,C_1\)并定义\(sub=C_1-C_0\)

我们观察一次变换

  • 当是将两个\(0\)变成一个\(1\)的时候.
    \(C'_1=C_1+1,C'_0=C_0-2\)
    \(sub'=C'_1-C'_0=C_1+1-(C_0-2)=C_1-C_0+3=sub+3\)

  • 当是将两个\(1\)变换为一个\(0\)的时候
    \(C'_1=C_1-2,C'_0=C_0+1\)
    \(sub'=C'_1-C'_0=C_1-2-(C_0+1)=C_1-C_0-3=sub-3\)

我们发现,对于任意一次变换,\(sub\)总是\(+3/-3\),其实就是\(sub\)关于\(\pmod 3\) 不变

那么也就是说,我们的\(0/1\)串在整个变换的过程中,\(sub\)关于\(\pmod 3\) 不变.

那么我们观察,当最终的串为\(1\)是,\(sub \equiv 1 \pmod 3\)

当最终的串为\(0\)是,\(sub \equiv 2 \pmod 3\)

也就是说,最终串的\(sub\pmod 3\)后,总是\(1,2\)

同时,我们知道,在变换的过程中\(sub\)的值总是不变,所以只有一开始串的\(sub \pmod 3\)的值为\(1,2\)时这个串才有可能是美丽串.

同时,字串是交替串与字串不能继续操作了互为充分必要条件 这是显然的

所以,一个\(0,1\)交替串肯定不是美丽串.

那么,我们考虑如果一个串不是\(0/1\)串,且在\(sub \pmod 3\)的值总是\(1,2\)的情况下,会不会最终走向\(0/1\)串导致卡壳?

由于我们知道上文中模运算的规律,所以\(C_0=C_1\)的\(0/1\)串不需要考虑

那么我们举个例子.

\(10101\)

诺从一个不是\(0/1\)的串变换而来

那么一定是从\(111101\)或则他的镜像变换而来的.

但是我们显然可以让他变换成\(0001\),

也就是说,我们总可以撤回一次变换,使得字符串在模\(3\)的意义下为\(1,2\)且一开始不是\(0/1\)串的情况下不变换为\(0/1\)串.

综上,只要一个串满足如下,那么这个串是美丽的

  • \(sub \equiv 1\)或\(sub \equiv 2\)

  • 不是\(0/1\)串

posted @ 2026-09-25 11:38  txp2025  阅读(6)  评论(0)    收藏  举报