#P4738. [CERC2017] Cumulative Code

[CERC2017] Cumulative Code

Description

如你所知,树是一个由 nn 个节点和 n1n - 1 条无向边组成的图,其中任意两个节点之间有且仅有一条路径。在标记树中,每个节点都用 11nn 之间的不同整数标记。标记树的 Prüfer 码是与该树相关联的唯一序列,通过不断从树中移除节点直到只剩下两个节点来生成。更确切地说,在每一步中,我们移除标号最小的叶子,并将其邻居的标号附加到代码的末尾。回忆一下,叶子是一个只有一个邻居的节点。因此,标记树的 Prüfer 码是一个长度为 n2n - 2 的整数序列。可以证明,原始树可以很容易地从其 Prüfer 码重建。深度为 kk 的完全二叉树,记为 CkC_k,是一个有 2k12^k - 1 个节点的标记树,其中对于所有 j<2k1j < 2^{k-1},节点 jj 连接到节点 2j2j2j+12j + 1。记 CkC_k 的 Prüfer 码为 p1,p2,...,p2k3p_1,p_2,..., p_{2^k-3}。由于 CkC_k 的 Prüfer 码可能很长,你不需要输出它。相反,你需要回答关于代码中某些元素和的 nn 个问题。每个问题由三个整数组成:a,da, dmm。答案是 CkC_k 的 Prüfer 码元素 pa,pa+d,pa+2d,...,pa+(m1)dp_a, p_{a+d}, p_{a+2d},..., p_{a+(m-1)d} 的和。

Input Format

第一行包含两个整数 kkq(2k30,1q300)q(2 \le k \le 30,1 \le q \le 300) —— 完全二叉树的深度和问题的数量。接下来的 qq 行中的第 jj 行包含第 jj 个问题:三个正整数 aj,dja_j, d_jmjm_j,使得 aj,dja_j, d_jaj+(mj1)dja_j + (m_j - 1)d_j 都最多为 2k32^k - 3

Output Format

输出 qq 行。第 jj 行应包含一个整数 —— 第 jj 个问题的答案。

3 5
1 1 1
2 1 1
3 1 1
4 1 1
5 1 1
2
2
1
3
3
4 4
2 1 5
4 4 3
4 8 1
10 3 2
18
15
5
13
7 1
1 1 125
4031

Hint

在上面的第一个例子中,当构造 C3C_3 的 Prüfer 码时,节点按以下顺序被移除:4,5,2,1,64, 5, 2, 1, 6。因此,C3C_3 的 Prüfer 码是 2,2,1,3,32, 2, 1, 3, 3

题面翻译由 ChatGPT-4o 提供。