#CF2009G1. Yunli's Subarray Queries (easy version)

    ID: 6921 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>二分数据结构双指针CodeforcesCodeforces Round 971(Div4)Div4G1CF2009G11900

Yunli's Subarray Queries (easy version)

题目描述

这是该问题的简单版本。保证所有问题中,r=l+k1r=l+k-1

题面描述

对于任意数组 bb,可以多次执行以下操作:

  • 选择一个下标 ii,令 bi=xb_i=x, 其中 xx 为任意整数(不限于区间 [1,n][1,n] )。

f(b)f(b) 为数组 bb 中,存在一个长度至少为 kk 的连续子数组^* 的最小操作次数。

给出一个大小为 nn 的数组 aa,然后询问 qq 个问题。在每个问题中,你必须输出 j=l+k1rf([al,al+1,,aj])∑_{j=l+k-1}^r f([a_l,a_{l+1},…,a_j])。注意在该题中,只被要求输出f([al,al+1,,aj])f([a_l,a_{l+1},…,a_j])


^* 如果存在一个长度为 kk 的连续子数组,且开始于下标 ii (1ibk+1)(1≤i≤|b|−k+1),则对于所有i<ji+k1i<j≤i+k−1,满足 bj=bj1+1b_j=b_{j−1}+1

输入格式

第一行包含 tt (1t104) (1≤t≤10^4 ) ——样例的组数。

每组样例的第一行包含三个整数 n,kn,k,和 qq (1kn2105,1q2105)(1≤k≤n≤2⋅10^5 , 1≤q≤2⋅10^5 ) ——数组的长度、连续子数组的长度和问题的个数。

接下去一行包含 nn 个整数 a1,a2,,ana_1,a_2,…,a_n (1ain)(1≤a_i≤n )

接下去 qq 行包含两个整数 llrr (1lrn,r=l+k1)(1≤l≤r≤n , r=l+k−1)

输出格式

对于每个问题,输出仅一行—— j=l+k1rf([al,al+1,,aj])∑_{j=l+k-1}^r f([a_l,a_{l+1},…,a_j])

样例

3
7 5 3
1 2 3 2 1 2 3
1 5
2 6
3 7
8 4 2
4 3 1 1 2 4 3 2
3 6
2 5
5 4 2
4 5 1 2 3
1 4
2 5
2
3
2
2
2
2
1

样例说明

保证在所有样例中,nn 的总和不超过 21052⋅10^5qq 的总和不超过21052⋅10^5

在第一个样例的第一个问题中,b=[1,2,3,2,1]b=[1,2,3,2,1]。可以执行两次操作以构造一个长度为 55 的连续子数组:

  • b4=4b_4=4
  • b5=5b_5=5

经过以上操作后,b=[1,2,3,4,5]b=[1,2,3,4,5]

在第一个样例的第二个问题中,b=[2,3,2,1,2]b=[2,3,2,1,2]。可以执行三次操作以构造一个长度为 55 的连续子数组:

  • b3=0b_3=0
  • b2=1b_2=-1
  • b1=2b_1=-2

经过以上操作后,b=[2,1,0,1,2]b=[-2,-1,0,1,2]

翻译提供:zhoujy1209

来源

Codeforces 2009G1,英文题名 Yunli's Subarray Queries (easy version)。