#P14088. [ICPC 2020 Jakarta R] Tree Beauty

    ID: 13295 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 7 上传者: 标签>CF2200数据结构树状数组树形DP数学前缀和图论

[ICPC 2020 Jakarta R] Tree Beauty

题目描述

有一棵有根树,包含 NN 个顶点,编号从 11NN。顶点 11 是树的根,对于所有 2iN2 \leq i \leq NPiP_i 是顶点 ii 的父节点。每个顶点都有一个美丽值,初始为 00

你可以使用一台特殊机器来增加顶点的美丽值。向机器提供三个参数 XXYYKK,机器将增加顶点 XX 的子树中所有顶点的美丽值。如果顶点 XX' 位于顶点 XX 的子树中,则其美丽值将增加 YKd\left\lfloor \frac{Y}{K^d} \right\rfloor,其中 dd 是连接顶点 XXXX' 的路径上的边数。例如,顶点 XX 的美丽值增加 YY,顶点 XX 的所有子节点的美丽值增加 YK\left\lfloor \frac{Y}{K} \right\rfloor,顶点 XX 的子节点的所有子节点的美丽值增加 YK2\left\lfloor \frac{Y}{K^2} \right\rfloor,以此类推。

你将依次执行 QQ 次操作。每次操作是以下类型之一:

  1. 使用特殊机器,向机器提供三个参数 XXYYKK
  2. 报告顶点 XX 的子树中所有顶点的美丽值总和。

对于每个第二类操作,输出顶点 XX 的子树中所有顶点的美丽值总和。

输入格式

输入第一行包含两个整数 NNQQ1N,Q1000001 \leq N, Q \leq 100\,000),分别表示顶点数量和操作数量。下一行包含 N1N-1 个整数 PiP_i1Pi<i1 \leq P_i < i),表示顶点 i[2,N]i \in [2, N] 的父节点;注意 ii22 开始。接下来 QQ 行,每行包含以下格式之一,表示你要执行的操作:

  • 1 X Y K1\ X\ Y\ K1XN1 \leq X \leq N1Y,K1000001 \leq Y, K \leq 100\,000
    使用特殊机器,向机器提供三个参数 XXYYKK
  • 2 X2\ X1XN1 \leq X \leq N
    输出顶点 XX 的子树中所有顶点的美丽值总和。

保证至少有一个第二类操作。

输出格式

对于每个第二类操作,按输入顺序输出一行一个整数,表示顶点 XX 的子树中所有顶点的美丽值总和。

输入输出样例 #1

输入 #1

5 5
1 1 3 3
1 1 99 2
2 1
2 3
1 3 2 3
2 3

输出 #1

245
97
99

说明/提示

样例 #1 解释

树的结构如下图所示:

  • 第一次操作使顶点 11 的美丽值增加 9999,顶点 2233 增加 4949,顶点 4455 增加 2424
  • 顶点 11 的子树中所有顶点的美丽值总和为 99+49+49+24+24=24599 + 49 + 49 + 24 + 24 = 245
  • 顶点 33 的子树中所有顶点的美丽值总和为 49+24+24=9749 + 24 + 24 = 97
  • 第四次操作使顶点 33 的美丽值增加 22,顶点 4455 增加 00
  • 顶点 33 的子树中所有顶点的美丽值总和为 51+24+24=9951 + 24 + 24 = 99