CF2084H.Turtle and Nediam 2
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
LGR-205-Div.1 C Turtle and Nediam
给定一个长度为 n 的二进制序列 s,仅由 0 和 1 组成。
你可以进行最多 n−2 次(可以是零次)以下操作:
- 设当前序列 s 的长度为 m。选择一个整数 i 满足 1≤i≤m−2。
- 设子数组 [si,si+1,si+2] 的中位数 ∗ 为 x,并令 j 为满足 j≥i 且 sj=x 的最小整数。
- 从序列中移除 sj 并将剩余部分拼接。换句话说,将 s 替换为 [s1,s2,…,sj−1,sj+1,sj+2,…,sm]。
注意每次操作后,序列 s 的长度会减少 1。
求经过若干次操作后,可以得到的不同二进制序列的数量,结果对 109+7 取模。
∗ 长度为奇数 k 的数组的中位数是指排序后的第 2k+1 个元素。
输入格式
每个测试包含多个测试用例。第一行包含测试用例的数量 t(1≤t≤104)。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 n(3≤n≤2⋅106)——二进制序列的长度。
第二行包含一个长度为 n 的字符串 s,仅由 0 和 1 组成。
保证所有测试用例的 n 之和不超过 2⋅106。
输出格式
对于每个测试用例,输出一个整数——可以得到的二进制序列的数量,对 109+7 取模。
输入输出样例
输入#1
5 5 11111 6 100011 9 000111000 14 11001111111000 16 0010000110100011
输出#1
4 8 30 114 514
说明/提示
-
在第一个测试用例中,可以得到以下二进制序列:[1,1]、[1,1,1]、[1,1,1,1]、[1,1,1,1,1]。
-
在第二个测试用例中,可以得到以下二进制序列:[0,1]、[0,1,1]、[1,0,1]、[1,0,0,1]、[1,0,1,1]、[1,0,0,0,1]、[1,0,0,1,1]、[1,0,0,0,1,1]。例如,要得到 [0,1,1],可以:
- 选择 i=2。子数组 [0,0,0] 的中位数为 0。移除 s2,序列变为 [1,0,0,1,1]。
- 选择 i=1。子数组 [1,0,0] 的中位数为 0。移除 s2,序列变为 [1,0,1,1]。
- 选择 i=1。子数组 [1,0,1] 的中位数为 1。移除 s1,序列变为 [0,1,1]。
翻译由 DeepSeek V3 完成
输入解题思路,AI测评打分。不知道怎么写?