你有一个01串,你可以选择 m 个长度为 k 的区间进行覆盖,并且要求每一个这样的区间中出现了至少 p 个 1 。
你选择的两个区间可以重叠。如果可供选择的区间不足 m 个,那么这些区间都会被选择;如果可供选择的区间大于等于 m 个,那么 一定 要选择 m 个区间。
求在所有可能的选择情况中,哪些点一定被覆盖,哪些点不一定被覆盖。
第一行一个正整数 T 表示数据组数。
每组数据有两行:
第一行三个正整数 n,m,k,p,其中 n 为字符串长度,m,k,p 意义如题目描述。
然后一行一个长度为 n 的01串。
每组数据输出一行一个长度为 n 的字符串,仅由 ?,-,+ 组成,表示
- 这个位置一定不被覆盖。+ 这个位置一定被覆盖。? 无法确定。3
8 100 2 1
00011000
8 2 3 2
10100110
12 3 4 3
011101011000
--++++--
???-?++?
?+++++???---
对于第一个样例,包含 1 的数量大于等于 p=1 的长度为 k=2 区间有 [3,4],[4,5],[5,6] ,共 3 个,远不足 m=100 个。
所以这 3 个区间都会被选择,从而覆盖了 [3,6] 内所有的点,其余点都不会被覆盖。
T≤100,1≤n≤1000,m,k,p≤n。
赛后补充:@josh00 注意到,样例中第一条数据不满足 m≤n,这是一个错误;但测试数据中不存在这样的数据。