A3204 「RMI 2024」Jump Civilization

暂无评定 传统题 RMI(罗马尼亚) 上传者
时间限制1000ms
内存限制512MiB
通过 / 提交0/0

A3204「RMI 2024」Jump Civilization

暂无评定 传统题 RMI(罗马尼亚) 上传者
时间限制1000ms
内存限制512MiB
通过 / 提交0/0

题目描述

题目译自 Romanian Master of Informatics 2024 Day2 T3 「Jump Civilization」

「Here in Parkour Jump Civilization, No One Chooses to Jump for the Beef」—— Evbo -《跑酷文明》电影

在跑酷文明的世界里,有 NN 个漂浮的岛屿,编号从 11 到 NN。当你站在岛屿 ii (1≤i<N)(1 \leq i < N) 上,你可以选择:

  • 简单跳跃:从岛屿 ii 跳到旁边的岛屿 i+1i + 1;
  • 困难跳跃:从岛屿 ii 跳到岛屿 viv_i,其中 i<vi≤Ni < v_i \leq N。

为了在跑酷文明中提升等级,你需要计算每个岛屿的跳跃能力。岛屿 ii 的跳跃能力是指从岛屿 ii 开始,最多使用 KK 次跳跃能够到达的岛屿数量。

上一任跳跃冠军为了确保跳跃路线的公平性,设定了一条重要规则:对于任意 1≤i<j≤N1 \leq i < j \leq N,要么 vi≤jv_i \leq j,要么 vj≤viv_j \leq v_i。

作为跑酷文明的一员新手,你希望高效地算出每个岛屿的跳跃能力——你能做到吗?

输入格式

输入的第一行包含两个空格分隔的整数 NN 和 KK。

第二行包含 N−1N - 1 个空格分隔的整数 v1,…,vN−1v_1, \dots, v_{N-1},表示每个岛屿的困难跳跃目标。

输出格式

输出一行,包含 NN 个空格分隔的整数,按顺序表示每个岛屿的跳跃能力。

5 1
4 3 4 5

3 2 2 2 1

从岛屿 11 开始:

  • 不跳跃,可以到达岛屿 11;
  • 跳跃一次,可以到达岛屿 22(简单跳跃)或岛屿 44(困难跳跃)。

总共能到达 33 个岛屿,因此岛屿 11 的跳跃能力是 33。

6 2
2 3 5 5 6

3 4 4 3 2 1

数据范围与提示

对于所有输入数据,满足:

  • 1≤N≤300 0001 \leq N \leq 300 \ 000
  • 1≤K≤N−11 \leq K \leq N - 1
  • i<vi≤Ni < v_i \leq N
  • 对于 1≤i<j≤N1 \leq i < j \leq N,满足 vi≤jv_i \leq j 或 vj≤viv_j \leq v_i。
  • 如果从岛屿 ii 出发,通过两种不同路径在最多 KK 次跳跃内都能到达岛屿 jj,在计算岛屿 ii 的跳跃能力时,岛屿 jj 只计数一次。
  • 计算跳跃能力时,跳跃类型(简单或困难)不重要,只看跳跃次数。

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 66 N≤2 000N \leq 2 \ 000
22 2727 N≤100 000N \leq 100 \ 000 且 K≤50K \leq 50
33 1111 对于 1≤i<N1 \leq i < N,vi≤i+2v_i \leq i + 2
44 3737 N≤100 000N \leq 100 \ 000
55 1919 无附加限制