C. 生长之树

    传统题 文件IO:grow 2000ms 256MiB

生长之树

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

题目描述

33DAI 得到了一棵有根树,根是 11 号点,一开始树上只有一个 11 号点。每个点上写着一个整数,一开始全都是 00。

接下来 33DAI 要依次执行 qq 次操作,操作有两种:

  • 1 v:给 vv 号点添加一个儿子。记操作前树的大小为 szsz,则这个新点的编号是 sz+1sz + 1,它上面写的数是 00。
  • 2 v x:把 vv 号点当前的子树(vv 自己以及此时已经存在的所有后代)里每个点上的数都加上 xx。

新出现的点上的数是 00,它不会被之前执行过的操作二影响;一次操作二也只影响它执行时已经存在的点。

所有操作执行完之后,33DAI 想知道最终树中每个点上的数。

输入格式

从文件 grow.in 读入数据。

第一行包含一个整数 TT(1≤T≤1041 \le T \le 10^4),表示测试用例组数。

接下来依次给出 TT 组测试用例,每组测试用例的格式为:

第一行包含一个整数 qq(1≤q≤5×1051 \le q \le 5 \times 10^5),表示操作次数。

接下来 qq 行,每行描述一次操作,格式为下列两种之一(含义见题目描述):

  • 1 v;
  • 2 v x。

输出格式

输出到文件 grow.out。

对每组测试用例输出一行:这一组操作全部执行完之后,设树的大小为 nn,则按编号从小到大输出 1,2,…,n1, 2, \dots, n 号点上的数,相邻两个数之间用一个空格分隔。

3
9
2 1 3
1 1
2 2 1
1 1
2 3 2
1 3
2 1 4
1 3
2 3 2
5
2 1 1
1 1
2 1 -1
1 1
2 1 1
5
1 1
1 1
2 1 1
2 1 3
2 2 10
7 5 8 6 2
1 0 1
4 14 4

样例 1 解释

第一组测试用例中,99 次操作依次为:

  1. 2 1 3:只有 11 号点,它加上 33;
  2. 1 1:给 11 号点添加儿子,新点是 22 号点,它的数是 00;
  3. 2 2 1:22 号点的子树只有它自己,加上 11;
  4. 1 1:给 11 号点添加儿子,新点是 33 号点,它的数是 00;
  5. 2 3 2:33 号点的子树只有它自己,加上 22;
  6. 1 3:给 33 号点添加儿子,新点是 44 号点,它的数是 00;
  7. 2 1 4:11 号点的子树是全部 44 个点,都加上 44;
  8. 1 3:给 33 号点添加儿子,新点是 55 号点,它的数是 00;
  9. 2 3 2:33 号点的子树是 3,4,53, 4, 5 号点,都加上 22。

于是 11 号点上的数是 3+4=73 + 4 = 7,22 号点上的数是 0+1+4=50 + 1 + 4 = 5,33 号点上的数是 0+2+4+2=80 + 2 + 4 + 2 = 8,44 号点上的数是 0+4+2=60 + 4 + 2 = 6,55 号点上的数是 0+2=20 + 2 = 2,按编号输出就是 7 5 8 6 2。

第二组测试用例中,11 号点上数的变化依次为 +1+1、−1-1、+1+1,合计 11;22 号点是在第二次操作时出现的,它出现之前的加值操作都不算在它头上,它只经历最后一次 +1+1,所以 22 号点是 11、33 号点是 00,最终输出 1 0 1。

第三组测试用例中,两次 1 1 让 22 号点与 33 号点都成为 11 号点的儿子;前两次 2 1 分别给 11 号点的子树加上 11 与 33,两次操作时 2,32, 3 号点都已经存在,所以它们各得到 1+3=41 + 3 = 4,11 号点是 0+1+3=40 + 1 + 3 = 4;最后的 2 2 10 只加给 22 号点的子树,于是 22 号点上的数是 4+10=144 + 10 = 14,33 号点是 44,按编号输出就是 4 14 4。

样例 2

见 grow2.in 与 grow2.ans。

样例 3

见 grow3.in 与 grow3.ans。

数据范围

对于所有测试数据,保证:

  • 1≤T≤1041 \le T \le 10^4;
  • 1≤q≤5×1051 \le q \le 5 \times 10^5;
  • 每个测试用例中,执行每次操作前 1≤v≤sz1 \le v \le sz,其中 szsz 是当时树的大小;
  • 操作二中的 xx 满足 −109≤x≤109-10^9 \le x \le 10^9;
  • 所有测试用例的 qq 之和不超过 5×1055 \times 10^5。

子任务

本题共 20 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 q≤2000q \le 2000
7∼127 \sim 12 所有加点操作都在加值操作之前
13∼2013 \sim 20 4040 无额外限制

每个测试点单独评分,全部测试点的得分之和即为本题得分。

三三信奥国庆模拟赛 CSP-S 第三场

未参加
状态
已结束
规则
OI
题目
4
开始于
2026-10-3 8:30
结束于
2026-10-6 8:30
持续时间
3.5 小时
主持人
参赛人数
30