#LX0057. 【动态规划】三色括号序列

【动态规划】三色括号序列

三色括号序列

你有一个长度为nn的序列,其中每个位置必定是(,)之一,此外,每个括号是有红绿蓝三种颜色之一的。也就是说,这个序列每个位置有“红色(,)绿色(,)蓝色(,)六种可能,这个序列共有6n6^n种可能。

一个序列是合法的,当且仅当满足:

(1)仅保留红绿两种颜色的括号,这个括号序列是合法的。

(2)仅保留红蓝两种颜色的括号,这个括号序列是合法的。

(3)仅保留蓝绿两种颜色的括号,这个括号序列是合法的。

对于输入的nn,请输出有多少种合法的括号序列。

输入格式

第一行输入一个数字nn

第二行输入一个长度为nn的字符串SS,其中Si=S_i=?,(,)之一。

(,)代表这个位置是左括号还是右括号已经被指定,?代表这个位置可以是任何一种括号。

输出格式

输出答案mod998244353\mod 998244353

样例输入1

6
()()()

样例输出1

27

样例输入2

6
??????

样例输出2

297

数据范围

n300n\leq 300,保证nn是偶数。

经优化后std只需要1s1s,所以2s2s时限很合理。