#CF2147C. 兔子
兔子
C. 兔子
每次测试时间限制: 秒
每次测试内存限制: 兆字节
你有 个花盆排成一行,编号为 到 ,从左到右。
有些花盆里装有花,有些是空的。你会得到一个长度为 的二进制字符串 ,其中 表示该花盆有花, 表示空花盆。
你想拍一张兔子和花朵的照片,所以你要在每个空花盆()里都放一只兔子。
每只兔子可以自行选择向左或向右看。
兔子很调皮,它们会试图跳跃,这可能会破坏画面。
- 每只兔子会准备跳到它看的方向的下一个花盆。
- 但如果那个花盆里已经有兔子,或者另一只兔子正从对面准备跳进同一个花盆,它们就不会跳。
- 兔子不会跳出边界(在花盆 向左看的兔子不会跳,在花盆 向右看的兔子也不会跳)。
你的目标是给每只兔子指定一个方向,使得没有任何兔子实际发生跳跃。
你需要判断是否存在这样的方向分配方案。
输入
每个测试点包含多个测试用例。
第一行包含一个整数 (),表示测试用例的数量。
每个测试用例:
- 第一行包含一个整数 ()
- 第二行包含一个长度为 的二进制字符串 ,表示有花()或空()
所有测试用例的 之和不超过 。
输出
对于每个测试用例,如果存在满足条件的兔子方向分配,输出 "YES",否则输出 "NO"。
大小写不敏感(例如 "yEs", "yes", "Yes", "YES" 都算 "YES")。
示例
输入:
12
4
0100
3
000
8
11011011
5
00100
1
1
5
01011
2
01
7
0101011
7
1101010
5
11001
4
1101
9
001101100
输出:
YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
NO
NO
注释
第一个测试用例(, ):
花盆 有花, 为空。
一种有效配置:
- 花盆 的兔子向右看
- 花盆 的兔子向左看
- 花盆 的兔子向左看
结果:
- 花盆 的兔子想跳到 ,但 有兔子且向左看,不会冲突(因为对跳时双方都不跳)
- 花盆 的兔子想跳到 ,但 有兔子且向右看,同样不跳
- 花盆 的兔子想跳到 ,但 已有兔子,所以不跳
第二个测试用例(, ):
全部为空。
一种有效配置:
- 花盆 向左看(边界,不跳)
- 花盆 向右看
- 花盆 向左看
结果:
- 花盆 想跳到 ,但 有兔子,不跳
- 花盆 想跳到 ,但 有兔子,不跳
第三个测试用例(, )输出 "NO",可以证明不存在有效分配。