#C. C. 括号序列

    传统题 文件IO:parentheses 1000ms 256MiB

C. 括号序列

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

C. 括号序列

题目描述

这是一道字符串题。

相信大家都有听说过括号序列。

在本题,括号序列指的是只由 ()(,)组成的字符串。

一个好的括号序列归纳定义如下:

归纳基:() 是一个好的括号序列

归纳步:若 A,BA,B 都是好的括号序列,那么 (A)AB 都是好的括号序列。

例如,(()())() 是一个好的括号序列;)(()()() 是括号序列,但不是一个好的括号序列;(aasdfa(Asd)) 不是一个括号序列。

现在你有一棵 nn 个点, n1n-1 条边,以 11 为根的有根树;树上的每个节点 xx 都有一个括号 axa_x = ()

现定义一个点 xx 对应的字符串 pxp_x 为从根开始依次经过最短路径到 xx 的所有节点括号的顺序拼接。

形式上:

1.1. p1=a1p_1 = a_1

2.px=pfx+ax2. p_x=p_{f_x} + a_x ,其中 fxf_xxx 的父亲,++ 表示拼接操作。

现在对于每一个 pxp_x 求有多少个子串是好的括号序列。

输入描述

第一行一个正整数 nn 表示树的点数。

第二行一个长度为 nn 的括号序列表示 aa

第三行一个长度为 n1n-1 的正整数序列 ff'。表示 fi+1=fif_{i+1}=f'_i

输出描述

为了减少输出规模,请输出 (xansx)(x*ans_x) 异或和。

即:$(1*ans_1) \^{\space} (2*ans_2) \^{\space} (3*ans_3) \^{\space} ... \^{\space} (n*ans_n)$

输入样例

7
(()()((
1 2 3 4 5 6

输出样例

15

数据范围

对于 10%10\% 的数据,满足 n8,fi=i1n\leq 8,f_i=i-1

对于 20%20\% 的数据,满足 n200,fi=i1n\leq 200,f_i=i-1

对于 30%30\% 的数据,满足 n2000,fi=i1n\leq 2000,f_i=i-1

对于 50%50\% 的数据,满足 n105,fi=i1n\leq 10^5,f_i=i-1

对于另外 20%20\% 的数据,满足 n2000n\leq 2000

对于另外 20%20\% 的数据,满足 n105n\leq 10^5

对于另外 10%10\% 的数据,满足 n5105n\leq 5*10^5

国庆CSPJ模拟1

未参加
状态
已结束
规则
IOI
题目
4
开始于
2023-10-1 6:00
结束于
2023-11-16 22:00
持续时间
1120 小时
主持人
参赛人数
5