CF1037F.Maximum Reduction

省选/NOI-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Given an array aa of nn integers and an integer kk (2≤k≤n2 \le k \le n), where each element of the array is denoted by aia_i (0≤i<n0 \le i \lt n). Perform the operation zz given below on aa and print the value of z(a,k)z(a,k) modulo 109+710^{9}+7.

function z(array a, integer k):
if length(a) < k:
return 0
else:
b = empty array
ans = 0
for i = 0 .. (length(a) - k):
temp = a[i]
for j = i .. (i + k - 1):
temp = max(temp, a[j])
append temp to the end of b
ans = ans + temp
return ans + z(b, k)

给定一个包含 nn 个整数的数组 aa 和一个整数 kk(2≤k≤n2 \le k \le n),其中数组的每个元素记为 aia_i(0≤i<n0 \le i \lt n)。对数组 aa 执行如下函数 zz,并输出 z(a,k)z(a,k) 对 109+710^{9}+7 取模的结果。

函数 zz(数组 aa,整数 kk):
若 length(a)<k\text{length}(a) < k:
  返回 00
否则:
  b=b = 空数组
  ans=0\text{ans} = 0
  对 i=0i = 0 到 length(a)−k\text{length}(a) - k:
    temp=a[i]\text{temp} = a[i]
    对 j=ij = i 到 i+k−1i + k - 1:
      temp=max⁡(temp, a[j])\text{temp} = \max(\text{temp},\, a[j])
    将 temp\text{temp} 追加至数组 bb 末尾
    ans=ans+temp\text{ans} = \text{ans} + \text{temp}
  返回 ans+z(b,k)\text{ans} + z(b, k)

输入格式

The first line of input contains two integers nn and kk (2≤k≤n≤1062 \le k \le n \le 10^6) — the length of the initial array aa and the parameter kk.

The second line of input contains nn integers a0,a1,…,an−1a_0, a_1, \ldots, a_{n - 1} (1≤ai≤1091 \le a_{i} \le 10^9) — the elements of the array aa.

输入的第一行包含两个整数 nn 和 kk(2≤k≤n≤1062 \le k \le n \le 10^6)——分别为初始数组 aa 的长度和参数 kk。

输入的第二行包含 nn 个整数 a0,a1,…,an−1a_0, a_1, \ldots, a_{n - 1}(1≤ai≤1091 \le a_{i} \le 10^9)——即数组 aa 的元素。

输出格式

Output the only integer, the value of z(a,k)z(a,k) modulo 109+710^9+7.

输出唯一的整数,即 z(a,k)z(a,k) 对 109+710^9+7 取模的值。

输入输出样例

  • 输入#1

    3 2
    9 1 10

    输出#1

    29
  • 输入#2

    5 3
    5 8 7 1 9

    输出#2

    34

说明/提示

In the first example:

  • for a=(9,1,10)a=(9,1,10), ans=19ans=19 and b=(9,10)b=(9,10),
  • for a=(9,10)a=(9,10), ans=10ans=10 and b=(10)b=(10),
  • for a=(10)a=(10), ans=0ans=0.

So the returned value is 19+10+0=2919+10+0=29.

In the second example:

  • for a=(5,8,7,1,9)a=(5,8,7,1,9), ans=25ans=25 and b=(8,8,9)b=(8,8,9),
  • for a=(8,8,9)a=(8,8,9), ans=9ans=9 and b=(9)b=(9),
  • for a=(9)a=(9), ans=0ans=0.

So the returned value is 25+9+0=3425+9+0=34.

在第一个例子中:

  • 对于 a=(9,1,10)a=(9,1,10),ans=19ans=19,且 b=(9,10)b=(9,10);
  • 对于 a=(9,10)a=(9,10),ans=10ans=10,且 b=(10)b=(10);
  • 对于 a=(10)a=(10),ans=0ans=0。

因此返回值为 19+10+0=2919+10+0=29。

在第二个例子中:

  • 对于 a=(5,8,7,1,9)a=(5,8,7,1,9),ans=25ans=25,且 b=(8,8,9)b=(8,8,9);
  • 对于 a=(8,8,9)a=(8,8,9),ans=9ans=9,且 b=(9)b=(9);
  • 对于 a=(9)a=(9),ans=0ans=0。

因此返回值为 25+9+0=3425+9+0=34。

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

首页