CF2217B.Flip the Bit (Easy Version)

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Flip the Bit (Easy Version)

这是问题的简单版本。两个版本的区别在于,这个版本中恰好有一个特殊的索引(k=1k=1)。只有你解决了这个问题的所有版本,才能破解。

给定一个长度为nn的二进制数组aa,并kk特殊指标p1,p2,,pkp_1, p_2, \ldots, p_k1pin1 \le p_i \le n)。给定所有特殊指标元素的aia_i值相同(即ap1=ap2==apka_{p_1} = a_{p_2} = \ldots = a_{p_k})。

在一个操作中,你可以选择一个范围[l,r][l, r]1lrn1 \le l \le r \le n),使该范围至少包含一个特殊索引(lpirl \le p_i \le r),并将所有位翻转为aja_j ljrl \le j \le r。稍微翻转一下,00变成1111变成00

xx表示在应用任何操作前特殊指标处的值。找出使数组中所有元素相等所需的最小运算次数xx

输入

每个测试包含多个测试用例。第一行包含测试用例的数量 tt1t1041 \le t \le 10^4)。以下是测试用例的描述。

每个测试用例的第一行包含两个整数nnkk1n21051 \le n \le 2 \cdot 10^5;k=1k=1)——即数组长度和特殊索引的数量。

第二行包含nn整数a1,a2,,ana_1, a_2, \ldots, a_n0ai10 \le a_i \le 1) ——数组的元素。

第三行包含kk整数p1,p2,,pkp_1, p_2, \ldots, p_k1p1<p2<<pkn1 \le p_1 \lt p_2 \lt \ldots \lt p_k \le n)——特殊指标。可以保证ap1=ap2==apka_{p_1} = a_{p_2} = \ldots = a_{p_k}

保证所有测试用例的总nn总和不超过21052 \cdot 10^5

输出

每个测试用例输出一个整数——这是所需的最小操作次数。

注释

第一个测试用例中,你可以选择范围[1,3][1, 3]并反转所有比特来得到[1,0,1][1, 0, 1]。然后你可以选择范围[2,2][2, 2],然后翻转第二个位来获得[1,1,1][1, 1, 1]

对于第二个测试用例,所有比特已经匹配特殊索引处的值。你不需要任何操作。

样例

4
3 1
0 1 0
2
5 1
1 1 1 1 1
1
6 1
0 1 0 1 0 1
3
17 1
0 1 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1
5
2
0
4
10

在线编程 IDE

建议全屏模式获得最佳体验