#P9887. [ICPC 2018 Qingdao R] Flippy Sequence

[ICPC 2018 Qingdao R] Flippy Sequence

Description

DreamGrid 刚刚从他的虚拟机中找到了两个二进制序列 s1,s2,,sns_1, s_2, \dots, s_nt1,t2,,tnt_1, t_2, \dots, t_n(对于所有 1in1 \le i \le nsi,ti{0,1}s_i, t_i \in \{0, 1\})!他想要执行下面描述的操作恰好两次,使得在两次操作后,对于所有 1in1 \le i \le n,都有 si=tis_i = t_i。 操作是:选择两个整数 llrr1lrn1 \le l \le r \le n),将所有 lirl \le i \le rsis_i 变为 (1si)(1 - s_i)。 DreamGrid 想知道有多少种方法可以做到这一点。 我们使用以下规则来确定两种方法是否不同: - 设 A=(a1,a2,a3,a4)A = (a_1, a_2, a_3, a_4),其中 1a1a2n,1a3a4n1 \le a_1 \le a_2 \le n, 1 \le a_3 \le a_4 \le n,表示 DreamGrid 为第一次操作选择整数 a1a_1a2a_2,为第二次操作选择整数 a3a_3a4a_4; - 设 B=(b1,b2,b3,b4)B = (b_1, b_2, b_3, b_4),其中 1b1b2n,1b3b4n1 \le b_1 \le b_2 \le n, 1 \le b_3 \le b_4 \le n,表示 DreamGrid 为第一次操作选择整数 b1b_1b2b_2,为第二次操作选择整数 b3b_3b4b_4。 - 如果存在整数 kk1k41 \le k \le 4)使得 akebka_k e b_k,则 AABB 被认为是不同的。

Input Format

有多个测试用例。输入的第一行包含一个整数 TT,表示测试用例的数量。对于每个测试用例: 第一行包含一个整数 nn1n1061 \le n \le 10^6),表示两个二进制序列的长度。 第二行包含一个长度为 nn 的字符串 s1s2sns_1s_2\dots s_nsi{‘0’,‘1’}s_i \in \{\text{`0'}, \text{`1'}\}),表示第一个二进制序列。 第三行包含一个长度为 nn 的字符串 t1t2tnt_1t_2\dots t_nti{‘0’,‘1’}t_i \in \{\text{`0'}, \text{`1'}\}),表示第二个二进制序列。 保证所有测试用例中 nn 的总和不超过 10710^7

Output Format

对于每个测试用例,输出一个整数表示答案。

3
1
1
0
2
00
11
5
01010
00111
0
2
6

Hint

对于第二个样例测试用例,有两个有效的操作对:(1,1,2,2)(1, 1, 2, 2)(2,2,1,1)(2, 2, 1, 1)。 对于第三个样例测试用例,有六个有效的操作对:(2,3,5,5)(2, 3, 5, 5)(5,5,2,3)(5, 5, 2, 3)(2,5,4,4)(2, 5, 4, 4)(4,4,2,5)(4, 4, 2, 5)(2,4,4,5)(2, 4, 4, 5)(4,5,2,4)(4, 5, 2, 4)

题面翻译由 ChatGPT-4o 提供。