#P11901. 数组的划分
数组的划分
题目背景
本来这里应该有一段一脉相承的背景故事。但是因为福尔魔斯验题的时候写吐了,所以背景故事没了。
题目描述
给出 个数组 和一个长为 的数组 。
定义 表示在所有 "把 分成若干段,要求每一段都是 中某个数组的子段" 的方式中,划分段数的最小值。
有以下操作:
-
强制限定 处必须划分,如果已经有了则取消。
-
将 的区间 改成数组 ,会给出 ,每次的 可能不一样。
-
询问 ,保证有解。
请你完成这些操作。
输入格式
第一行四个数,,表示 的长度,总共有多少个文本数组 ,操作数,以及数据类型(参见说明)。
接下来 行,每行先给出一个数 ,代表 的长度,然后 个数给出 这个数组的元素。
下一行,给出 个数,表示 中的元素。
接下来 行,每行表示一个操作,分别如下:
-
,表示若 处不必须划分,则标为必须划分,否则取消。
-
,表示令 。
-
,表示询问 。
输出格式
对于每次询问,输出一个数表示答案。每个答案占一行。
5 3 7 0
3 1 2 3
4 3 2 2 2
3 3 2 2
2 3 3 2 1
3 1 5
1 3
3 1 5
2 2 4 1 3 2
3 1 5
1 3
3 1 5
3
4
5
4
10 5 20 0
3 1 2 3
5 3 3 1 1 3
10 1 2 1 1 2 3 2 1 1 3
2 1 1
2 1 3
1 3 2 3 3 1 3 3 2 3
1 4
2 7 7 3
3 3 9
1 4
1 2
2 5 5 2
1 2
2 7 7 2
1 1
3 5 8
2 4 4 1
3 3 8
1 1
1 3
2 6 6 1
2 1 1 1
2 4 4 2
1 7
3 1 5
3 1 9
4
2
3
4
6
提示
样例解释
对于第一组样例,初始数组为 ,段数最小分割的方式为 ,故输出 。然后限制了 之间必须分割,故最小的分割方式为 ,输出为 。之后数组被修改为 ,段数最小的分割方式为 ,故输出 。最后取消了 之间必须分割的限制,最小分割方式为 ,输出 。
数据范围
记 ,对于所有操作 2, ,其中 是操作 2 的出现次数, 为数组中和修改后的数组中的元素的最大值,则各数据点的限制如下:
测试点 | 特殊性质 | ||||
---|---|---|---|---|---|
无 | |||||
保证没有操作 1, 2 | |||||
保证没有操作 2 | |||||
无 | |||||
保证没有操作 1, 2 | |||||
保证没有操作 2 | |||||
无 |
对于所有数据,保证 $1\le n,M,q\le10^5, 0\le T\le 10^5,1\le V\le10^9, 1\le id\le9, l\le r$ 。 中的所有数都在 中出现。
保证给出的数组随机,但是询问的区间与询问的操作并不随机。具体而言,初始给出的 以及询问时可能给出的 在符合上文所述限制之下的所有可能情况中等概率选取。而其他数据则不是随机的。