#XMOJ11813. 捉迷藏搜查
捉迷藏搜查
说明
时间限制:1 Sec
内存限制:256 MB
输入文件:hyspy.in 输出文件:hyspy.out
小明和同学们在一条由 $n$ 个连续格子组成的场地上玩捉迷藏。$a$ 个同学每人躲进一个"藏身帐篷",每个帐篷恰好占连续的 $b$ 个格子,帐篷之间可以紧挨着但不能重叠。如果一个帐篷里躲着一个同学,只要小明搜查的格子属于这个帐篷,这个同学就会被找到。
小明之前已经搜查过 $k$ 个格子,但都没找到人(说明这些格子一定是空的)。现在他想再挑选若干个格子搜查,使得无论同学们怎么躲,都至少有一个人被找到。
请你计算:为了达到这个目标,他最少需要再搜查多少个格子?并输出这些格子的位置(任意一种合法方案即可)。
输入格式
第一行四个正整数 $n, a, b, k$($1 \le n \le 200000$,$1 \le a, b \le n$,$0 \le k \le n-1$),分别表示格子总数、同学的数量、每个帐篷的长度、已经搜查过的格子数。
第二行一个长度为 $n$ 的字符串,由 0 和 1 组成。第 $i$ 个字符为 1 表示小明已经搜查过第 $i$ 个格子(必为空),为 0 表示尚未搜查。保证字符串中恰好有 $k$ 个 1。保证至少存在一种合法的帐篷摆放方案。
输出格式
第一行输出一个整数 $m$,表示最少需要再搜查的格子数。
第二行输出 $m$ 个整数,表示这些格子的位置(从左到右编号为 $1$ 到 $n$)。每个格子只输出一次,顺序任意。若有多种方案,输出任意一种即可。
样例
样例 1
5 1 2 1
00100
2
2 5
样例说明:
只有一个同学,帐篷长 格,且它不能放在第 格(已被搜过、必为空)。因此帐篷要么在第 格,要么在第 格。小明在第 格和第 格各搜一次,无论同学躲在哪边都必被找到。
数据范围
$1 \le n \le 200000$,$1 \le a, b \le n$,$0 \le k \le n-1$。
相关
在下列比赛中: