CF2148E.Split
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
农夫 John 有一个包含 n 个正整数的数组 a 和一个整数 k。
记 a[l,r] 表示数组 a 的一个子数组∗。他执行如下过程来独立判断子数组 a[l,r] 是否为“awesome”:
- FJ 最初有 k 个空的多重集,编号从 1 到 k。
- 对于 a 中的每一个元素 ai(1≤i≤n):
- 如果 l≤i≤r(也就是 ai 属于子数组 a[l,r]),他将 ai 放入多重集 1;
- 否则,他可以随意将 ai 放入任意一个多重集(可以是多重集 1)。
- 如果存在一种分配方式,使得对于每个取值 v,所有多重集中值为 v 的元素个数都相同,也就是说,使得所有多重集中包含完全相同的元素(忽略元素顺序),则称子数组 a[l,r] 为“awesome”。
请输出所有“awesome”子数组的数量。
∗ 对于大小为 n 的数组 a,以及整数 1≤l≤r≤n,子数组 a[l,r] 是由 al,…,ar 按顺序组成的数组。
输入格式
第一行包含一个整数 t(1≤t≤1000)—— 测试用例的数量。
每个测试用例的第一行包含两个整数 n 和 k(2≤k≤n≤2⋅105)。
接下来一行包含 n 个用空格分隔的整数 a1,a2,…,an(1≤ai≤n)。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,输出一个整数,表示“awesome”子数组的数量。
输入输出样例
输入#1
4 3 2 1 1 1 4 2 1 2 1 2 8 2 3 3 3 3 2 2 2 2 6 3 1 1 1 1 1 1
输出#1
0 7 18 11
说明/提示
测试用例 1:n=3,a=[1,1,1]。
对于 k=2,无法让两个多重集中 1 的数量相等,因此没有“awesome”子数组。
测试用例 2:n=4,a=[1,2,1,2]。
对于 k=2,最终状态下每个多重集都应包含恰好一个 1 和一个 2。因此,一个有效的子数组最多只能包含一个 1 和最多一个 2。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?