AT_abc455_g [ABC455G] Balanced Subarrays
题目描述
给定一个长度为 $N$ 的正整数序列 $A$。
在 $A$ 所有 $\frac{N(N+1)}{2}$ 个非空(连续)子数组中,若某个子数组 $X$ 满足如下条件,我们称其为“平衡序列”:
- $X$ 中出现的每个整数在 $X$ 中出现的次数都完全相同。
对于每一个 $k=1,2,\dots,K$,请分别求出以下两个值:
- 使得每个整数在序列中恰好出现 $B_k$ 次的平衡序列个数。
- 恰好包含 $B_k$ 个不同整数的平衡序列个数。
若两个子数组取自 $A$ 的不同位置,即使它们作为序列完全相同,也应被视为不同。
对于每组输入,请求解 $T$ 组测试数据。
输入格式
输入由标准输入给出,格式如下:
> $T$
> $\mathrm{case}_1$
> $\mathrm{case}_2$
> $\vdots$
> $\mathrm{case}_T$
每组测试数据格式如下:
> $N$ $K$ $A_1$ $A_2$ $\dots$ $A_N$ $B_1$ $B_2$ $\dots$ $B_K$
输出格式
输出格式如下:
> $\mathrm{case}_1$
> $\mathrm{case}_2$
> $\vdots$
> $\mathrm{case}_T$
对于每组测试数据,令 $c_{k,1}$ 表示每个整数恰好出现 $B_k$ 次的平衡序列个数,$c_{k,2}$ 表示恰好包含 $B_k$ 个不同整数的平衡序列个数,答案输出格式如下:
> $c_{1,1}$ $c_{1,2}$ $c_{2,1}$ $c_{2,2}$ $\vdots$ $c_{K,1}$ $c_{K,2}$
说明/提示
### 样例解释 1
对于第一组测试数据,满足平衡序列定义的区间 $(l,r)$ 为 $(1,1),(1,2),(1,4),(2,2),(2,3),(3,3),(3,4),(4,4)$,共 $8$ 个。
其中,每个数都恰好出现两次的只有 $(1,4)$,共 $1$ 个;恰好有 $2$ 个不同数的有 $(1,2),(1,4),(2,3),(3,4)$,共 $4$ 个,因此 $k=1$ 时输出 `1 4`。
又,每个数恰好出现 $1$ 次的有 $(1,1),(1,2),(2,2),(2,3),(3,3),(3,4),(4,4)$,共 $7$ 个;恰好有 $1$ 个不同数的有 $(1,1),(2,2),(3,3),(4,4)$,共 $4$ 个。因此 $k=2$ 时输出 `7 4`。
### 数据范围
- $1\leq T\leq 2\times 10^5$
- $1\leq N\leq 2\times 10^5$
- $1\leq K\leq \min(N,10)$
- $1\leq A_i \leq N$
- $1\leq B_k \leq N$
- $B_1,B_2,\dots,B_K$ 互不相同。
- 所有测试数据中 $N$ 之和不超过 $2\times 10^5$。
- 所有输入数均为整数。
由 ChatGPT 5 翻译