0%

CF2149E Hidden Knowledge of the Ancients

题意简述

在 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}$ 来维护出现频率及目前包含不同数的个数。