luogu#P6360. [CEOI2018] Lottery

[CEOI2018] Lottery

题目背景

译自 CEOI2018 Day1 T3. Lottery

题目描述

请注意特殊的内存限制。

长期以来,你一直是 Bytelotto 的忠实粉丝,但你的家人一直告诉你所有这样的游戏都是在浪费钱。你觉得这肯定是因为他们缺少技巧。你有一个很棒的计划,每个人都将很快看到你赢得游戏。

游戏类型很多,你对其中之一感兴趣:Bitlotto。游戏规则很简单,每天随机抽取一个数字作为中奖数字。你记下了连续 nn 天的中奖数字 a1,a2,,ana_1, a_2, \ldots, a_n。你确信这当中存在某种规律,尤其是连续 ll 天的区间中。你的家人仍然不相信你,所以说服他们的唯一方法是可靠的数学。

一共有 nl+1n-l+1 个长度为 ll 的区间。第 ii 个区间从 ii 开始,因此它包含元素 ai,ai+1,,ai+l1a_i, a_{i+1}, \ldots, a_{i+l-1}。定义两个区间的距离为他们对应位置上的数字不相等的数量。形式化地说,第 xx 个区间与第 yy 个区间的距离为满足 ax+iay+ia_{x+i}\ne a_{y+i} 的位置 i (0i<l)i\ (0\le i < l) 的数量。然后我们定义两个区间是 kk-相似的当且仅当这两个区间的距离不超过 kk

现在给出连续 nn 天的中奖数字和 qq 个询问,每个询问给出一个整数 kjk_j,你需要对序列中的每个长度为 ll 的区间,求出与该区间 kjk_j-相似的区间个数(不包括本身)。

输入格式

标准输入的第一行包含两个整数 n,ln,l,分别表示天数和你需要分析的区间长度。

第二行包含 nn 个空格隔开的整数 a1,a2,,ana_1, a_2, \ldots, a_naia_i 表示第 ii 天的中奖数字。

第三行包含一个整数 qq,表示询问次数。

接下来 qq 行,每行包含一个整数 kjk_j,表示第 jj 个询问的相似参数。

输出格式

输出 qq 行,第 jj 行包含 nl+1n-l+1 个空格隔开的整数,表示第 jj 个询问的答案。一行中的第 ii 个数表示与第 ii 个区间 kjk_j-相似的不包括本身的区间数量。

6 2
1 2 1 3 2 1
2
1
2
2 1 1 1 1
4 4 4 4 4

提示

样例解释

整个序列有五个长度为 22 的区间:

  • 第一个区间包含 11 22
  • 第二个区间包含 22 11
  • 第三个区间包含 11 33
  • 第四个区间包含 33 22
  • 第五个区间包含 22 11

共有两个询问。

第一个询问 k=1k=1。第一个和第三个区间——11 2211 33——只有第二个位置不同,所以他们的距离为 11。类似地,第一个和第四个区间——11 2233 22——只有第一个位置不同,所以他们的距离为 11。与第一个区间 11-相似的区间只有这两个,所以第一个数输出 22

第二个询问 k=2k=2,所有区间都是 22-相似的。

数据规模与约定

对于 100%100\% 的数据,$1\le n\le 10^4,\ 1\le a_i\le 10^9,\ 1\le q\le 100,\ 0\le k_j\le l$。

所有测试数据被划分成若干个有附加限制的子任务,每个子任务中包含若干测试点。

子任务 附加限制 分值
11 n300n \le 300 2525
22 n2000n \le 2000 2020
33 q=1,k1=0q=1, k_1=0
44 q=1q=1 1515
55 无附加限制 2020