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 翻译