5520: OI联盟[202407]T5 修改括号序列
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:1
解决:0
题目描述
现在给你一个括号序列。每个括号要么是左括号,要么是右括号。所有括号都被染了颜色,每个括号被染了以下3 种颜色中的一种:红色、绿色和蓝色。
你现在可以把某些位置的括号从左括号变成右括号,或者从右括号变成左括号。你不允许改变括号的排列顺序,也不允许改变括号的颜色。现在,你可以用零次或多次的修改操作,使得最终的括号序列同时满足以下两个条件:
1.如果去掉所有的红色括号,剩下的括号构成一个合法的括号序列。
2.如果去掉所有的绿色括号,剩下的括号构成一个合法的括号序列。
一个括号序列 S 是合法的当且仅当它满足条件之一:
3.S 为空。
4.存在两个合法的括号序列 X,Y ,使得 S=XY
5.存在一个合法的括号序列 X,使得S=(X)。请注意,在这种情况下,最左的左括号和最右的右括号{ }是不同颜色的。
问是否存在一种修改方案?若存在,最少的修改次数是多少?
输入
n ,表示括号序列的长度。
第二行包含一个只包含 '(' 和 ')' 的字符串 s ,表示给定的括号序列。
第三行包含 n 个整数 ci (0 =< ci <= 2) 。 ci 表示第 i 个括号的颜色。 0 表示红色, 1 表示绿色,2
输出
如果存在一种修改方案,输出一个整数表示最少的修改次数。否则输出 -1 。
样例输入 复制
5
))))(
0 1 2 2 2
样例输出 复制
4
提示
样例2:
3 ()( 0 2 1
-1
样例3:
6 (()()) 0 0 0 0 0 0
0
数据范围: