你有一个01串,你可以选择 mmm 个长度为 kkk 的区间进行覆盖,并且要求每一个这样的区间中出现了至少 ppp 个 1 。
你选择的两个区间可以重叠。如果可供选择的区间不足 mmm 个,那么这些区间都会被选择;如果可供选择的区间大于等于 mmm 个,那么 一定 要选择 mmm 个区间。
求在所有可能的选择情况中,哪些点一定被覆盖,哪些点不一定被覆盖。
第一行一个正整数 TTT 表示数据组数。
每组数据有两行:
第一行三个正整数 n,m,k,pn,m,k,pn,m,k,p,其中 nnn 为字符串长度,m,k,pm,k,pm,k,p 意义如题目描述。
然后一行一个长度为 nnn 的01串。
每组数据输出一行一个长度为 nnn 的字符串,仅由 ?,-,+ 组成,表示
?,-,+
-
+
?
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≤nT\leq 100,1\leq n\leq 1000,m,k,p\leq nT≤100,1≤n≤1000,m,k,p≤n。
赛后补充:@josh00 注意到,样例中第一条数据不满足 m≤nm\leq nm≤n,这是一个错误;但测试数据中不存在这样的数据。