#HK4893. 「POI2014 R2」超级计算机 Supercomputer

「POI2014 R2」超级计算机 Supercomputer

题目描述

题目译自 XXI Olimpiada Informatyczna — II etap Superkomputer

Bajtazar 打造了一台设计新颖的超级计算机。它可配备多个相同处理器,每个处理器每单位时间执行一条指令。程序不再按顺序运行,而是呈树状结构。每条指令可能有零条、一条或多条后续指令。执行完一条指令后,其后续指令可按任意顺序执行,甚至在不同处理器上并行运行。若超级计算机有 kk 个处理器,每单位时间最多并行执行 kk 条指令。

Bajtazar 准备运行一个程序。他希望充分利用资源,思考处理器数量如何影响运行速度。请你编写程序,帮他计算给定程序和处理器数量下,最短的程序执行时间。

输入格式

输入第一行包含两个整数 n,qn, q (1n,q1000000)(1 \leq n, q \leq 1000000),分别表示程序的指令数和查询次数。

第二行包含 qq 个整数 k1,k2,,kqk_1, k_2, \ldots, k_q (1ki1000000)(1 \leq k_i \leq 1000000)kik_i 表示第 ii 次查询的处理器数量。

第三行包含 n1n-1 个整数 a2,a3,,ana_2, a_3, \ldots, a_n (1ai<i)(1 \leq a_i < i)aia_i 表示指令 ii 的前驱指令编号。指令编号为 11nn,指令 11 为程序起点。

输出格式

输出一行,包含 qq 个整数,第 ii 个整数表示使用 kik_i 个处理器时,程序的最短执行时间。

20 1
3
1 1 1 3 4 3 2 8 6 9 10 12 12 13 14 11 11 11 11

8

sup.png

程序执行过程如下表所示:

时间 指令
11 11
22 2,3,42, 3,4
33 5,6,75, 6,7
44 8,108, 10
55 9,129, 12
66 11,13,1411, 13, 14
77 15,16,1715, 16, 17
88 18,19,2018, 19, 20

附加样例

  1. n=10,q=2n=10, q=2,指令树为路径;
  2. n=10,q=3n=10, q=3,小型随机测试;
  3. n=100,q=3n=100, q=3,所有指令直接跟随指令 11
  4. n=127,q=1n=127, q=1,指令形成满二叉树;
  5. n=1000000,q=31n=1000000, q=31,指令树为长路径。

数据范围与提示

对于 35%35\% 的数据,n30000,q50n \leq 30000, q \leq 50
对于其中 20%20\% 的数据,n1000,q10n \leq 1000, q \leq 10