luogu#P4792. [BalticOI 2018] 火星人的 DNA

    ID: 8818 远端评测题 2000ms 750MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>前缀和字符串枚举暴力2018BalticOI

[BalticOI 2018] 火星人的 DNA

题目描述

题目译自 BalticOI 2018 Day1「Martian DNA

给定一个字符集大小 Σ=K|\Sigma| = K 的长度为 NN 的字符串和 RR 个要求,每个要求为使子串中的字符 BB 至少出现 QQ 次。求出满足所有要求的最短子串长度。

输入格式

第一行包括三个整数 N,K,RN,\, K,\, R,分别表示字符串的长度、字符集的大小和要求个数,保证 1RKN1\leqslant R\leqslant K\leqslant N
第二行包含 NN 个用空格隔开的整数,表示这个字符串。字符从 00 开始编号,每个字符集中的字符至少出现一次。
接下来的 RR 行,每行两个整数 BBQQ,表示一组要求,满足 0B<K,1QN0\leqslant B < K,\, 1\leqslant Q\leqslant N,同一个字符不会被重复要求两次。

输出格式

输出一个整数,满足所有要求的最短子串长度。特别地,如果不存在这样的子串,输出 "impossible"。

5 2 2
0 1 1 0 1
0 1
1 1
2

13 4 3
1 1 3 2 0 1 2 0 0 0 0 3 1
0 2
2 1
1 2
7

5 3 1
1 2 0 1 2
0 2
impossible

提示

样例 1 解释

有三个长度为 22 的子串含有字符 0011 各一个,分别为 0 11 00 1,但是不存在长度为 11 的子串满足要求,因此满足要求的最短子串的长度为 22

样例 2 解释

最短的满足要求的子串为 1 3 2 0 1 2 0

样例 3 解释

在这个字符串中,0 的数量不足。

子任务 分值 限制
11 1616 1N100,R101\leqslant N\leqslant 100,\, R\leqslant 10
22 2424 1N4000,R101\leqslant N\leqslant 4\, 000,\, R\leqslant 10
33 2828 1N200000,R101\leqslant N\leqslant 200\, 000,\, R\leqslant 10
44 3232 1N2000001\leqslant N\leqslant 200\, 000

感谢 Hatsune_Miku 提供的翻译