Codeforces Round #825 (Div. 2)D. Equal Binary Subsequences

Codeforces Round #825 (Div. 2)D. Equal Binary Subsequences

题意

给定一个长度为2n的01字符串s。你可以对其中一个子序列进行向右旋转一个位置。

问能否将字符串分割成两个相等的序列。如果不可以,输出-1,否则,输出你选择旋转的子序列。以及分割后第一个序列的索引。

题解

有趣的构造,奇偶考虑,如果分成的两个序列,一个全是原来奇数位上的字符,一个全是偶数位上的字符,那么如果两个序列相等,字符串就要满足 \(S_{2n}=S_{sn+1}\)

我们目标是操作之后,字符串满足要求

对原来的字符两两匹配,\((2n,2n+1)\) 如果两个相等,就不管,把所有不相等的取出来,就会形如 \((10),(01),(01),(01)\) ,每个对字符中取一个,构成0101交替的序列,即第一对取 0 ,第二对取 1 ,第三对取 0 …。将这个序列进行一次右旋转,则全部的对都变成相同的了。

posted @ 2022-10-12 13:20  缙云山车神  阅读(75)  评论(1编辑  收藏  举报