loj#P4043. 「SNOI2024」字符树

「SNOI2024」字符树

题目描述

给你一个 nn 个点的有根树,根为 11。每条边上有一个字符 c={0,1}c = \{0, 1\}SuS_u 表示从根到 uu 的路径上每条边的字符依次写下来组成的字符串。保证每个节点向儿子的边上的字符互不相同。

对每个点 uu,有一个价值 valuval_u 和一个限制 aua_u。对每个点 uu,如果点 vv 满足 SuS_uSvS_v 的后缀。那么我们认为 vv 是的 uu 扩展点。

Alice 手里有一个字符串 SS,初始令 S=SuS = S_u,现在他可以删掉若干末尾的字符,使得 SS 变成 SS'。并将 SS' 告诉给 Bob。

Bob 获得了一个字符串 SS',他需要在 SS' 之后加入若干字符,并获得 SS''。对于某个 uu 的扩展点vv,满足 S=SvS'' = S_v,并且 Sav|S'| \ge a_v,那么 Bob就获得了 valvval_v 的收益,当然 Bob 只能进行一次这样的操作,所以他会选择符合条件的 vv 里,valvval_v 最大的那个。如果没有符合条件的 vv,Bob 只能获得 00 的收益。

现在 Alice 想知道,对于删除 0S0 \sim |S| 个字符,总计 S+1|S| + 1 种删除方式里 Bob 能获得权值之和是多少?

对于每个 uu,你都需要回答 Alice 的询问。

形式化地说:

我们需要对每个点 uu 求出 $ans_u = \sum\limits_{0 \le i \le |S_u|} \max\limits_{i \ge a_v\land S_{u}=S_v[|S_v|-|S_u|+1, |S_v|] \land S_u[1, i] = S_v[1, i]} val_v$。

特殊的,如果对于某个 uu,不存在任何 vv 满足条件,那么 max=0\max = 0

其中 S[l,r]S[l, r] 表示字符串SS的第 ll 到第 rr 个字符组成的字符串。特殊的,S[x+1,x]S[x + 1, x] 表示空串。S|S| 表示字符串 SS 的长度,\land 表示且。

输入格式

多组测试数据,第一行一个整数 TT 表示数据组数。

对于每组测试数据,第一行一个正整数 nn,表示节点个数。

接下来 n1n - 1 行,每行两个整数fai,cifa_i, c_i 表示第 ii 个点的父亲编号,以及边上的字符。

接下来一行 nn 个正整数 val1,val2,,valnval_1, val_2, \dots, val_n

接下来一行 nn 个非负整数 a1,a2,,ana_1, a_2, \dots, a_n

输出格式

输出一行 nn 个整数 ans1,ans2,,ansnans_1, ans_2, \dots, ans_n

1
5
1 0
1 1
2 0
2 1
1 2 3 4 5 
0 1 0 1 2

3 4 6 8 5

以下表格表示当 u,iu, i 固定时,式子中 valvval_v 的最大值。

u=1u=1 u=2u=2 u=3u=3 u=4u=4 u=5u=5
i=0i=0 33 00 33 00 00
i=1i=1 44 33 44
i=2i=2 44 55

数据范围与提示

对于所有数据保证 1T51 \le T \le 51n5×1051 \leq n \leq 5\times 10^5, 1vali1091\leq val_i\leq 10^9, 1fai<i,ci={0,1},0ain1\leq fa_i < i, c_i = \{0, 1\}, 0 \leq a_i \leq n

具体如下:

测试点编号 nn\leq 特殊性质
121\sim2 100100
353\sim5 2×1032\times10^3
686\sim8 10410^4
9109\sim10 10510^5 A
111211\sim12 B
131613\sim16
172017\sim20 5×1055\times10^5

特殊性质 A:ci=0c_i = 0

特殊性质 B:fai=i2fa_i = \lfloor \frac{i}{2} \rfloor