初始有一个空的 01 串,每步操作可以将 0 或 1 添加在左侧或右侧,也可以对整个串进行反异或操作: 取 s. ′ = s ⊕ rev,其中 s 是目前的 01 串,⊕ 表示逐位异或,rev 代表将 s 翻转,也就是说取中心位置并交换所有对称的两个位置的字符,例如,rev = 1010 rev = 010 rev = 1100,反异或操作最多使用一次,给定一个 01 串 T,问最少需要添加多少个 1 才能从一个空 01 串得到 T。
初始有一个空的 01 串,每步操作可以将 0 或 1 添加在左侧或右侧。也可以对整个串进行反异或操作: 取 s ′ = s ⊕ rev(s),其中 s 是目前的 01 串,⊕ 表示逐位异或,rev(s) 代表将 s 翻转,也就是说取中心位置并交换所有对称的两个位置的字符。例如,rev(0101) = 1010 rev(010) = 010 rev(0011) = 1100。 反异或操作最多使用一次(可以不用,也可以用一次)。 给定一个 01 串 T,问最少需要添加多少个 1 才能从一个空 01 串得到 T。 在本题中 0 可以添加任意个。
(图片来源网络,侵删)