#lg3572. [POI 2014] PTA-Little Bird小鸟

[POI 2014] PTA-Little Bird小鸟

AdditionalFile4894.zip

P3572 [POI 2014] PTA-Little Bird

题目描述

有 nn 棵树排成一排,第 ii 棵树的高度是 did_i。

有 qq 只鸟要从第 11 棵树到第 nn 棵树。

当第 ii 只鸟在第 jj 棵树时,它可以飞到第 j+1,j+2,⋯ ,j+kij+1, j+2, \cdots, j+k_i 棵树。

如果一只鸟飞到一颗高度大于等于当前树的树,那么它的劳累值会增加 11,否则不会。

由于这些鸟已经体力不支,所以它们想要最小化劳累值。

输入格式

第一行输入 nn。

第二行 nn 个数,第 ii 个数表示 did_i。

第三行输入 qq。

接下来 qq 行,每一行一个整数,第 ii 行的整数为 kik_i。

输出格式

共 qq 行,每一行输出第 ii 只鸟的最小劳累值。

输入输出样例 #1

输入 #1

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

输出 #1

2
1

说明/提示

1≤n≤1061 \le n \le 10^6,1≤di≤1091 \le d_i \le 10^9,1≤q≤251 \le q \le 25,1≤ki≤n−11 \le k_i \le n - 1。

#4894. 「POI2014 R2」小鸟 Little Bird

标签: 传统 | 时间限制: 10000 ms | 内存限制: 128 MiB |

题目描述

题目译自 XXI Olimpiada Informatyczna — II etap Ptaszek

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

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

输入格式

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

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

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

接下来的 qq 行描述鸟儿,每行一个整数 kik_{i} (1≤ki≤n−1)(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,树高交替为 11 和 22,两种鸟儿每 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}=i,d1000=d2000=d3000=…=d1000000=2d_{1000}=d_{2000}=d_{3000}=\ldots=d_{1000000}=2,其余 di=1d_{i}=1。

数据范围与提示

对于 70%70\% 的数据,n≤100000n \leq 100000。
对于其中 30%30\% 的数据,n≤1000n \leq 1000。