P1064A 病毒cancer

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签树形 DP · 前缀和 · 树

【题目背景】

A 病毒席卷了 Gioush 大队!

【题目描述】

A 病毒在 Gioush 大队的 nn 个营地中肆虐,Gioush 大队的 nn 个营地的结构是一棵以 11 号营地为根节点的有根树结构。

A 病毒与普通病毒不同,它会将沿途获得的每一条信息保存在自己的记忆中,并据此不断调整之后的传播策略。记录越多,它看似越能理解各个营地,行动时却也必须同时遵守越来越多的限制。

对于 2in2\leq i\leq nii 号营地的父亲为 pip_i 号营地。记 did_i 为从 ii 号营地前往 11 号营地需要经过的道路数量,则 d1=0d_1=0,对于 2in2\leq i\leq n,有 di=dpi+1d_i=d_{p_i}+1

A 病毒希望从某个 2n2\sim n 号营地开始传播,最终侵入 11 号营地。将这样一次传播的过程称为一条感染路线。当 A 病毒位于 ii 号营地时,可以进行以下两种行动之一:

  1. 上行感染:在给定的范围 [li,ri][l_i,r_i] 中选择一个整数 kk,沿着前往 11 号营地的方向传播 kk 步,也就是直接到达 ii 号营地的 kk 级祖先。保证 1liridi1\leq l_i\leq r_i\leq d_i
  2. 下行扩散:选择 ii 号营地的一个儿子并传播到该营地。特别地,当 ii 号营地是叶子时,A 病毒无法进行下行扩散

一条感染路线中,A 病毒最初所在的营地与每次行动后到达的营地依次构成这条路线的感染序列。形式化地说,从 xx 号营地开始的一条感染路线对应一个序列 a1=x,a2,,am=1a_1=x,a_2,\cdots,a_m=1。对于每个 1i<m1\leq i<m,要么存在 laikrail_{a_i}\leq k\leq r_{a_i},使得 ai+1a_{i+1}aia_ikk 级祖先,要么有 pai+1=aip_{a_{i+1}}=a_i

所幸,Gioush 大队早已为每个 2n2\sim n 号营地准备了防疫装置,其中 ii 号营地的防疫强度hih_i。A 病毒每经过一个营地,这个营地的防疫装置就会启动。此后,A 病毒若再次进行上行感染,就必须越过此前经过的每个营地所能封锁的范围。

具体地说,一条感染路线合法,当且仅当对于其感染序列中的任意 1i<jm1\leq i<j\leq m,若 A 病毒由 aj1a_{j-1} 号营地通过上行感染到达 aja_j 号营地,则必须满足 daj<daihaid_{a_j}<d_{a_i}-h_{a_i}。保证对于每个 2in2\leq i\leq n,均有 0hi<di0\leq h_i<d_i

对于每个 2n2\sim n 号营地,请你分别求出从该营地开始、最终侵入 11 号营地的合法感染路线数量。两条感染路线不同,当且仅当它们对应的感染序列不同。

由于答案可能很大,你只需要输出答案对 998,244,353998{,}244{,}353 取模后的结果。

【输入格式】

从文件 cancer.in\textbf{\textit{cancer.in}} 中读入数据。

本题包含多组测试数据。

输入的第一行包含两个整数 c,Tc,T,分别表示测试点编号与测试数据组数。c=0c=0 表示该测试点为样例。

接下来依次输入每组测试数据。对于每组测试数据:

第一行包含一个整数 nn,表示营地的数量。

接下来 n1n-1 行,第 i1i-1 行包含四个整数 pi,li,ri,hip_i,l_i,r_i,h_i,依次表示 ii 号营地的父亲、进行上行感染时可以选择的步数下界与上界,以及 ii 号营地的防疫强度

【输出格式】

输出到文件 cancer.out\textbf{\textit{cancer.out}} 中。

对于每组测试数据,输出一行 n1n-1 个整数,其中第 i1i-1 个整数表示从 ii 号营地开始的合法感染路线数量对 998,244,353998{,}244{,}353 取模后的结果。

【样例 1 输入】

0 351 1 1 02 1 1 02 1 2 14 2 3 061 1 1 02 1 2 03 1 3 24 1 4 15 1 5 361 1 1 02 1 2 02 1 2 03 1 2 03 2 3 2

【样例 1 输出】

3 3 2 45 9 3 21 64 10 5 14 1

【说明/提示】

【样例 1 解释】

对于第一组测试数据,从 44 号营地开始的合法感染路线共有 22 条,其感染序列分别为 [4,1][4,1][4,5,1][4,5,1]。从 55 号营地开始的合法感染路线共有 44 条,其感染序列分别为 [5,1][5,1][5,2,1][5,2,1][5,2,4,1][5,2,4,1][5,2,4,5,1][5,2,4,5,1]

因此,从 252\sim 5 号营地开始的合法感染路线数量依次为 3,3,2,43,3,2,4

【样例 2】

见选手目录下的 cancer/cancer2.in\textbf{\textit{cancer/cancer2.in}}cancer/cancer2.ans\textbf{\textit{cancer/cancer2.ans}}

该组样例符合测试点 121\sim 2 的数据范围。

【样例 3】

见选手目录下的 cancer/cancer3.in\textbf{\textit{cancer/cancer3.in}}cancer/cancer3.ans\textbf{\textit{cancer/cancer3.ans}}

该组样例符合测试点 383\sim 8 的数据范围。

【样例 4】

见选手目录下的 cancer/cancer4.in\textbf{\textit{cancer/cancer4.in}}cancer/cancer4.ans\textbf{\textit{cancer/cancer4.ans}}

该组样例符合测试点 9119\sim 11 的数据范围。

【样例 5】

见选手目录下的 cancer/cancer5.in\textbf{\textit{cancer/cancer5.in}}cancer/cancer5.ans\textbf{\textit{cancer/cancer5.ans}}

该组样例符合测试点 121512\sim 15 的数据范围。

【样例 6】

见选手目录下的 cancer/cancer6.in\textbf{\textit{cancer/cancer6.in}}cancer/cancer6.ans\textbf{\textit{cancer/cancer6.ans}}

该组样例符合测试点 162016\sim 20 的数据范围。

【数据范围】

对于 100%100\% 的数据,保证 1T201\leq T\leq 202n2×1032\leq n\leq 2\times 10^3。对于同一个测试点,保证 n2×103\sum n\leq 2\times 10^3。对于任意 2in2\leq i\leq n,保证 1pi<i1\leq p_i<i1liridi1\leq l_i\leq r_i\leq d_i0hi<di0\leq h_i<d_i

测试点编号nn特殊性质
121\sim 210\leq 10
383\sim 8100\leq 100
9119\sim 112×103\leq 2\times 10^3A
121512\sim 152×103\leq 2\times 10^3B
162016\sim 202×103\leq 2\times 10^3

特殊性质 A:对于任意 2in2\leq i\leq n,均有 hi=0h_i=0

特殊性质 B:对于任意 2in2\leq i\leq n,均有 pi=i1p_i=i-1

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解