AT_arc027_4.[ARC027D] ぴょんぴょんトレーニング

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

在跡鼓駄(あとこだ)町有一家 ARC 咖啡店,以竞赛编程咖啡馆而闻名。

高桥君在 ARC 咖啡店打工。

高桥君每次去 ARC 咖啡店时,总是会经过一条名为精进通り的道路。精进通り连接着高桥君的家和 ARC 咖啡店。

精进通り是一条由 NN 块石头铺成的石板路。这些石头从高桥君家所在的一侧起,依次编号为 11 到 NN。

为了锻炼身体,高桥君决定在精进通り上训练 DD 天。

第 ii 天的训练方式如下:

  • 训练过程中,如果高桥君在第 xx 块石头上,他可以跳到第 x+1x+1、x+2x+2、…、x+hxx+h_x 块石头上。hxh_x 在所有训练日中都是固定的。
  • 训练开始时,高桥君在第 sis_i 块石头上。
  • 训练时,他需要通过不断跳跃,从第 sis_i 块石头跳到第 tit_i 块石头。在跳跃过程中,即使可以跳到编号大于 tit_i 的石头,也不能实际跳到编号大于 tit_i 的石头上。
  • 当到达第 tit_i 块石头时,训练结束。

高桥君很好奇,从第 sis_i 块石头跳到第 tit_i 块石头一共有多少种不同的跳跃方式。这里的跳跃方式指的是跳跃过程中经过的石头序列的总数。高桥君打算亲自尝试所有的跳跃方式。

同事青木君为了阻止高桥君,决定提前计算出从第 sis_i 块石头跳到第 tit_i 块石头的所有跳跃方式数,并把结果告诉高桥君。

请你编写程序,对于每一天,计算从第 sis_i 块石头跳到第 tit_i 块石头的所有跳跃方式数。

两个跳跃方式不同,是指途中经过的石头序列不同。

输入格式

输入通过标准输入给出,格式如下:

NN
h1 h2 ... hNh_1\ h_2\ ...\ h_N
DD
s1 t1s_1\ t_1
s2 t2s_2\ t_2
⋮\vdots
sD tDs_D\ t_D

  • 第 11 行包含一个整数 NN,表示石头的数量,2≤N≤300, ⁣0002 \leq N \leq 300,\!000。
  • 第 22 行包含 NN 个用空格分隔的整数。第 ii 个整数 hih_i(1≤hi≤101 \leq h_i \leq 10)表示从第 ii 块石头可以跳到第 i+1i+1、i+2i+2、…、i+hii+h_i 块石头。注意,可能存在 i+hi>Ni+h_i > N 的情况。
  • 第 33 行包含一个整数 DD,表示训练天数,1≤D≤5, ⁣0001 \leq D \leq 5,\!000。
  • 接下来的 DD 行,每行包含两个用空格分隔的整数 si, tis_i,\ t_i(1≤si<ti≤N1 \leq s_i < t_i \leq N),表示第 ii 天的训练从第 sis_i 块石头开始,到第 tit_i 块石头结束。

输出格式

输出共 DD 行。第 ii 行输出第 ii 天从 sis_i 到 tit_i 的跳跃方式数,结果对 1000000007 (=1, ⁣000, ⁣000, ⁣007)1000000007\ (=1,\!000,\!000,\!007) 取模。输出末尾需换行。

输入输出样例

  • 输入#1

    7
    1 2 3 2 2 1 1
    3
    2 6
    5 7
    1 7

    输出#1

    6
    2
    9
  • 输入#2

    11
    3 1 4 1 5 9 2 6 5 3 5
    4
    3 7
    2 9
    1 10
    1 11

    输出#2

    6
    22
    90
    175

说明/提示

部分分

本题设有部分分。

  • 若能通过 N≤500N \leq 500 的数据集 1,可获得 3030 分。
  • 若能通过无额外限制的数据集 2,可额外获得 7070 分。

样例说明 1

第 11 天的训练是从第 22 块石头跳到第 66 块石头。此时输入为 (h2,h3,h4,h5,h6)=(2,3,2,2,1)(h_2, h_3, h_4, h_5, h_6) = (2, 3, 2, 2, 1)。跳跃方式共有 66 种,如下图所示。 ![](/img/arc/027/4-1.png)

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页