2020-2021:teams:farmer_john:2sozx:codeforces_round_658_div._1
A
题意:$t$ 组数据,每组数据包含两个 $01$ 串 $A,B$,定义一种操作为选定一个串的前缀,将其每位取反并且翻转前缀,问经过多少次操作使得 $A$ 会变成 $B$,并给出具体方案。$\sum n\le 10^5$
题解:我们考虑从 $B$ 的最后一位向前进行匹配,如果当前 $A$ 的首位与此时枚举的 $B$ 的值相同,则可以先将 $A$ 的首位翻转,再将 $A$ 的这一段区间进行翻转,让 $A$ 的首位落在此时 $B$ 的位置上,如果值不同则可以直接进行第二步。考虑操作会带来什么变化,由于枚举的位数向前,因此之后 $A$ 所在的段必会被整体翻转整数次,只需要记录翻转的次数以及翻转后的首位位置即可。
B
C
D
E
2020-2021/teams/farmer_john/2sozx/codeforces_round_658_div._1.txt · 最后更改: 2020/07/24 15:03 由 2sozx