#P11885. [RMI 2024] 跑酷 / Jump Civilization

[RMI 2024] 跑酷 / Jump Civilization

题目描述

nn 个岛,编号 1n1\sim n。给定长度为 (n1)(n-1) 的正整数数列 v1,v2,,vn1v_1,v_2,\ldots,v_{n-1}

当你在岛 ii1i<n1\le i\lt n)上时,可以跳到岛 (i+1)(i+1) 上或者岛 viv_i 上。这里,i<vii\lt v_i

给定正整数 kk。对于岛 ii,定义 f(i,k)f(i,k) 表示从它出发跳至多 kk 步能够跳到的岛有多少个(包括自身)。

此外,viv_i 还满足特殊性质对于任意 1i<j<n1\le i\lt j\lt n,要么 vijv_i\le j,要么 vjviv_j\le v_i

对于 i=1,2,,ni=1,2,\ldots,n,求出 f(i,k)f(i,k)

补充说明:即使岛 ii 有多种在 kk 步内跳到岛 jj 的方式,岛 jj 也只算一次。

输入格式

第一行,两个正整数 n,kn,k

第二行,(n1)(n-1) 个正整数 v1,v2,,vn1v_1,v_2,\ldots,v_{n-1}

输出格式

输出一行 nn 个正整数,第 ii 个数表示 f(i,k)f(i,k)

输入数据 1

5 1
4 3 4 5

输出数据 1

3 2 2 2 1

输入数据 2

6 2
2 3 5 5 6

输出数据 2

3 4 4 3 2 1

提示

样例解释

  • 样例 11 解释:以岛 11 为例,跳 00 步可以到达岛 11,跳 11 步可以到达岛 {2,4}\{2,4\}。所以 f(1,1)=3f(1,1)=3

数据范围

对于 100%100\% 的数据,保证:

  • 1n3×1051\le n\le 3\times 10^5
  • 1k<n1\le k\lt n
  • i<vini\lt v_i\le n
  • 对于任意 1i<j<n1\le i\lt j\lt n,要么 vijv_i\le j,要么 vjviv_j\le v_i

子任务 nn\le 特殊性质 得分
11 20002\, 000 66
22 10510^5 A\text{A} 2727
33 3×1053\times 10^5 B\text{B} 1111
44 10510^5 3737
55 3×1053\times 10^5 1919
  • 特殊性质 A\text{A}k50k\le 50
  • 特殊性质 B\text{B}vii+2v_i\le i+2