增援

【题目描述】

国王决定在某些城市加派士兵。所有城市初始士兵数量为0。当城市i被加派了k名士兵时。城市的所有子城市需要被加派k+1名士兵。这些子城市的所有子城市需要被加派k+2名士兵。以此类推。

在加派士兵的同时,国王随时可能会询问以城市i为根的子树中所有城市总共被加派了多少士兵。

【输入描述】

第一行输入两个整数N、P,分别表示城市数量以及国王命令的数量;

第二行输入N-1个整数,分别表示2~N号节点的父亲节点;

接下来P行,每行输入国王的一个命令,命令的格式分两种:

(1)A X K:在城市X加入K个士兵;

(2)Q X:询问以城市X为根的子树中所有士兵数量的和。

【输出描述】

对于每个Q,输出答案。

【样例输入】

7 10

1 1 2 2 5 5

Q 1

A 2 1

Q 1

Q 2

Q 5

A 5 0

Q 5

A 3 1

Q 1

Q 2

【样例输出】

0

11

11

8

10

14

13

【数据范围及提示】

对于50%的数据,1 ≤ N ≤ 1000,1 ≤ P ≤ 300;

对于100%的数据,1 ≤ N ≤ 50000,1 ≤ P ≤ 100000,1 ≤ X ≤ N,0 ≤ K ≤ 1000。

原文地址:https://www.cnblogs.com/Ackermann/p/5930562.html