[Usaco2006 Mar]Lights Out 关灯
奶牛喜欢在黑暗中睡觉。每天晚上,牲口棚中有 盏灯,奶牛希望最终亮着的灯尽可能少。它们知道灯的开关在哪里,却无法直接操作,因此需要借助一个长度为 的插槽改变灯的状态。
所有灯从左到右编号为 到 。每次操作选择一个整数 ,满足 ,并将插槽左端对准第 盏灯。对于每个满足 的整数 :
- 若插槽字符串的第 位为 ,则翻转第 盏灯的状态,即 变为 , 变为 ;
- 若插槽字符串的第 位为 ,则第 盏灯的状态保持不变。
各次操作的效果按异或叠加。若 ,则不存在合法的操作位置。
设所有操作位置按严格递增顺序记为 。你需要依次满足以下目标:
- 使操作后亮灯的数量最少;
- 在此基础上,使操作次数 最少;
- 若仍有多种方案,选择序列 字典序最大的方案。
输入格式
第一行包含两个整数 和 。
第二行包含一个长度为 的二进制字符串,表示所有灯的初始状态。其中, 表示灯熄灭, 表示灯亮起。
第三行包含一个长度为 的二进制字符串,表示插槽。 表示翻转对应位置的灯, 表示对应位置的灯保持不变。
输出格式
第一行输出操作次数 。
随后 行依次输出操作位置 。
样例输入
10 4
1111111111
1101
样例输出
5
1
3
4
6
7
样例解释
共使用插槽 次,灯的状态变化如下:
- 初始状态为 ;
- 在位置 使用插槽后,状态变为 ;
- 在位置 使用插槽后,状态变为 ;
- 在位置 使用插槽后,状态变为 ;
- 在位置 使用插槽后,状态变为 ;
- 在位置 使用插槽后,状态变为 。
可以证明,该方案使最终亮灯数最少;在此基础上,操作次数最少;在同时满足前两项的方案中,其严格递增的操作位置序列字典序最大。
数据范围
- ;
- 。
来源与许可
本题为 USACO 2006 March 试题「Lights Out(关灯)」,题面与测试数据整理自 BZOJ。
样例 1
输入
10 4
1111111111
1101
输出
5
1
3
4
6
7