CF1129D Isolation

题目描述

给定一个长度为 $n$ 的整数数组 $a$,请你计算有多少种方法可以将数组 $a$ 划分为若干个不相交的非空连续段,使得在每个段中,恰好出现一次的不同整数的个数不超过 $k$。 由于答案可能很大,请输出答案对 $998\,244\,353$ 取模后的结果。

输入格式

第一行包含两个用空格分隔的整数 $n$ 和 $k$($1 \leq k \leq n \leq 10^5$),分别表示数组 $a$ 的长度和题目中的限制条件。 第二行包含 $n$ 个用空格分隔的整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq n$),表示数组 $a$ 的元素。

输出格式

输出一行一个整数,表示将数组 $a$ 划分的方法数,对 $998\,244\,353$ 取模。

说明/提示

在第一个样例中,三种可能的划分方式如下: - $ [[1], [1], [2]] $ - $ [[1, 1], [2]] $ - $ [[1, 1, 2]] $ 划分 $ [[1], [1, 2]] $ 不合法,因为在第二个段 $[1, 2]$ 中,有两个不同的整数恰好出现一次。 由 ChatGPT 4.1 翻译