#HK4894. 「POI2014 R2」小鸟 Little Bird

「POI2014 R2」小鸟 Little Bird

题目描述

题目译自 XXI Olimpiada Informatyczna — II etap Ptaszek

在字节森林中,nn 棵树木排成一列。一只小鸟站在第一棵树的树梢,想飞到最后一棵树的顶端。它还年幼,体力有限,可能无法一口气飞完全程。若小鸟在第 ii 棵树的树梢,它一次飞行可到达第 i+1,i+2,,i+ki+1, i+2, \ldots, i+k 棵树,之后必须停下休息。

向上飞对小鸟来说格外吃力:从较低或等高的树飞到更高或等高的树会让它疲惫不堪,而向下飞则轻松无忧。你需要为小鸟规划落脚的树木,让它尽可能少地感到疲惫。此外,小鸟有几位朋友也想从第一棵树飞到最后一棵树,它们的体力各不相同(即 kk 值不同)。请你也帮帮它们!

输入格式

输入第一行包含一个整数 nn (2n1000000)(2 \leq n \leq 1000000),表示字节森林的树木数量。

第二行包含 nn 个整数 d1,d2,,dnd_{1}, d_{2}, \ldots, d_{n} (1di109)(1 \leq d_{i} \leq 10^{9})did_{i} 表示第 ii 棵树的高度。

第三行包含一个整数 qq (1q25)(1 \leq q \leq 25),表示需要考虑飞行的鸟儿数量。

接下来的 qq 行描述鸟儿,每行一个整数 kik_{i} (1kin1)(1 \leq k_{i} \leq n-1),表示第 ii 只鸟儿的体力,即它一次飞行最多可跳过的树木数为 kik_{i}

输出格式

输出 qq 行,第 ii 行一个整数,表示第 ii 只鸟儿最少需要从较低或等高树飞到更高或等高树的次数。

9
4 6 3 6 3 7 2 6 5
2
2
5

2
1

第一只鸟儿可依次停在 1,3,5,7,8,91, 3, 5, 7, 8, 9 号树,需在第 33 到第 55 棵树和第 77 到第 88 棵树向上飞,共疲惫 22 次。

附加样例

  1. n=11,q=1,k1=5n=11, q=1, k_{1}=5,所有树高相等,答案为 22(在第 66 棵树中途休息即可);
  2. n=100,q=2,k1=5,k2=6n=100, q=2, k_{1}=5, k_{2}=6,树高交替为 1122,两种鸟儿每 55 棵树休息一次,各疲惫 1111 次;
  3. n=100,q=1,k1=10n=100, q=1, k_{1}=10,树高为 100,99,,1100, 99, \ldots, 1,答案为 00
  4. n=1000000,q=25,ki=in=1000000, q=25, k_{i}=id1000=d2000=d3000==d1000000=2d_{1000}=d_{2000}=d_{3000}=\ldots=d_{1000000}=2,其余 di=1d_{i}=1

数据范围与提示

对于 70%70\% 的数据,n100000n \leq 100000
对于其中 30%30\% 的数据,n1000n \leq 1000