CF2009G1.Yunli's Subarray Queries (easy version)

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

这是该问题的简单版本。保证所有问题中,r=l+k−1r=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+k−1rf([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 (1≤i≤∣b∣−k+1)(1≤i≤|b|−k+1),则对于所有i<j≤i+k−1i<j≤i+k−1,满足 bj=bj−1+1b_j=b_{j−1}+1。

输入格式

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

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

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

接下去 qq 行包含两个整数 ll 和 rr (1≤l≤r≤n,r=l+k−1)(1≤l≤r≤n , r=l+k−1)。

输出格式

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

输入输出样例

  • 输入#1

    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

    输出#1

    2
    3
    2
    2
    2
    2
    1

说明/提示

保证在所有样例中,nn 的总和不超过 2⋅1052⋅10^5,qq 的总和不超过2⋅1052⋅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。

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

首页