#P2100. 【淘天研发岗】2025-3-29-第一题-修改元素

【淘天研发岗】2025-3-29-第一题-修改元素

题目描述

薯条哥拿到了一个长度为 nn,仅由字符 0011ZZ组成的字符串 s1,s2,,sns_1,s_2,…,s_n。据说,这个字符串是用来匹配数组的。

我们称由 nn 个整数组成的数组{a1,a2,...,an}\left \{a_1,a_2,...,a_n \right \}满足匹配字符串 s=s1,s2,,sns= s_1,s_2,…,s_n 的要求,当且仅当对于每个 i(1in)i(1\le i\le n)有:

sis_i00 时,ai0a_i\le 0

sis_i11时,ai0a_i\ge 0

sis_iZZ 时,ai=0a_i=0,且 ai1×ai+10a_{i-1}\times a_{i+1}\ge 0(如果 i=1i=1i=ni=n ,则没有这个限制)。

你可以对数组中的任意元素进行修改,每个修改操作可以将该元素改为任意整数。求最少需要修改多少个元素,使得修改后的数组满足上述匹配要求。

输入描述

第一行输入一个整数 n(1n<2×105)n(1 \le n < 2\times 10^5)代表匹配长度。

第二行输入一个长度为 nn 的字符串 ss,字符串仅由 0011ZZ三种字符组成。

第三行输入 nn 个整数 a1,a2,...,an(106ai106)a_1,a_2,...,a_n(-10^6 \le a_i\le 10^6) 代表数组中的元素。

输出描述

输出一个整数,代表最少需要修改的元素个数。

样例1

输入

4
Z0Z0
-1 -2 3 4

输出

3

样例解释

在这个样例中:

对于第一个位置,由于 s1=Zs_1=Z,所以 a1a_1 应当 =0= 0,将其修改。

对于第二个位置,由于 s2=0s_2 =0,所以 a2a_2 应当 0\le 0,此时, a2a_2 已经满足条件,不需要修改。

对于第三个位置,由于 s3=Zs_3 =Z,所以 a3a_3 应当 =0= 0,将其修改

对于第四个位置,由于 s4=0s_4 =0,所以 a4a_4 应当 0\le 0,不妨将其修改为 4-4

至此,数组修改了 33 次,为 {0,2,0,4}\left \{ 0,-2,0,-4 \right \} 。检查每一个 ZZ,发现:

对于 S1S_1ZZ,没有额外条件;

而对于 s3s_3ZZ,此时已经有 a2×a40a_2 \times a_4 \ge 0 满足条件。

所以数组被 ss 匹配。我们可以证明,在这个样例中,至少需要修改 33 个元素。

样例2

输入

3
01Z
-9 6 0

输出

0