题目传送门:
C1. Prefix Flip (Easy Version)
C2. Prefix Flip (Hard Version)
题目描述
给两个长度为n的01串a,b,选择操作 i 即将串的前i个元素取反并翻转(比如1100取反并翻转前3个数变为1000,用操作3表示),对a串进行若干操作使其与b串相同,输出操作数和具体操作。
Easy Version:总的n不超过1e3,操作数不超过3n
Hard Version:总的n不超过1e5,操作数不超过2n
思路
题目说可以证明a一定能变成b,那么表示我们一定可以构造一种通用操作方式使得a变成b,并且题目暗示了通解操作数的数量级为3n和2n。
Easy Version:
我们希望a与b在第i个元素不同时修改第i个元素并且不影响其他元素,但是我们知道操作是对前缀进行取反和翻转,通过观察我们容易发现执行操作i后第i个元素跑到第1个位置,于是就可以想到一种构造方法:
- 遇到a与b的第i个元素不同
- 执行操作i(取反并翻转前i个元素)
- 执行操作1(取反并翻转第1个元素)
- 执行操作i(取反并翻转前i个元素)