题意简述
在 Deepwoken 的世界里,存在着一个古老的神器—无限知识之碑,上面刻着一串 $n$ 神秘符号(每个符号都是一个整数)。
据说,只有找到所有神圣的碎片,才能揭示这件神器的真正力量。这些碎片是石板上的连续片段,其中包含 $k$ 个不同的数字,其长度必须在 $l$ 和 $r$ 之间(含)。
形式上给定长度为 $n$ 的序列 $a$ 和整数 $k$ , $l$ , $r$ 。你需要找出 $b$ 和 $c$ 这样的边界的个数:
- $1 \le b \le c \le n$ ;
- 在元素 $[ a{b}, a{b + 1}, \dots, a_{c} ]$ 中恰好有 $k$ 个不同的数;
- $l \leq c - b + 1 \leq r$ .
思路分析
勾八的用 unordered_map 会被卡。。。这内心得多阴暗才能卡我 umap 啊 /fn
两个滑动窗口维护以 $l$ 为起点的最短和最长的包含 $k$ 个不同数的区间即可。
具体可以使用 $\text{map}$ 和 $\text{set}$ 来维护出现频率及目前包含不同数的个数。