P11901 数组的划分
题目背景
本来这里应该有一段一脉相承的背景故事。但是因为福尔魔斯验题的时候写吐了,所以背景故事没了。
题目描述
给出 $m$ 个数组 $s_1, s_2, \cdots s_m$ 和一个长为 $n$ 的数组 $t$。
定义 $f(l,r)$ 表示在所有 "把 $t_l...t_r$ 分成若干段,要求每一段都是 $s$ 中某个数组的子段" 的方式中,划分段数的最小值。
有以下操作:
1. 强制限定 $p,p+1$ 处必须划分,如果已经有了则取消。
2. 将 $t$ 的区间 $[l, r]$ 改成数组 $a$,会给出 $a$,每次的 $a$ 可能不一样。
3. 询问 $f(l,r)$,保证有解。
请你完成这些操作。
输入格式
第一行四个数,$n,m,q,id$,表示 $t$ 的长度,总共有多少个文本数组 $s$,操作数,以及数据类型(参见说明)。
接下来 $m$ 行,每行先给出一个数 $k$,代表 $s_i$ 的长度,然后 $k$ 个数给出 $s_i$ 这个数组的元素。
下一行,给出 $n$ 个数,表示 $t$ 中的元素。
接下来 $q$ 行,每行表示一个操作,分别如下:
1. $1\ x$,表示若 $x,x+1$ 处不必须划分,则标为必须划分,否则取消。
2. $2\ l\ r\ a_1\ a_2 \cdots a_{r-l+1}$,表示令 $\forall l \le i \le r,t_i = a_{i-l+1}$。
3. $3\ l\ r$,表示询问 $f(l,r)$。
输出格式
对于每次询问,输出一个数表示答案。每个答案占一行。
说明/提示
## 样例解释
对于第一组样例,初始数组为 $[2,3,3,2,1]$ ,段数最小分割的方式为 $[2,3|3,2|1]$ ,故输出 $3$ 。然后限制了 $3,4$ 之间必须分割,故最小的分割方式为 $[2,3|3|2|1]$ ,输出为 $4$ 。之后数组被修改为 $[2,1,3,2,1]$ ,段数最小的分割方式为 $[2|1|3|2|1]$ ,故输出 $5$ 。最后取消了 $3,4$ 之间必须分割的限制,最小分割方式为 $[2|1|3,2|1]$ ,输出 $4$ 。
-----
## 数据范围
记 $\sum\limits_{i=1}^m |s_i|= M$ ,对于所有操作 2, $\sum\limits_{i=1}^t |r_i-l_i+1| = T$ ,其中 $t$ 是操作 2 的出现次数, $V$ 为数组中和修改后的数组中的元素的最大值,则各数据点的限制如下:
| 测试点 | $n, M, q \leq$ | $T\leq$ | $V\leq$ | $id=$ | 特殊性质|
| :-----------: | :-----------: | :-----------: | :-----------: | :-----------: | :-----------: |
| $1\sim3$ | $50$ | $10^5$ | $10^9$ | $1$ | 无 |
| $4$ | $1000$ | $1000$ | $10^9$ | $2$ | 无 |
| $5$ | $1000$ | $0$ | $4$ | $3$ | 保证没有操作 1, 2 |
| $6\sim7$ | $1000$ | $0$ | $4$ | $4$ | 保证没有操作 2 |
| $8\sim11$ | $1000$ | $1000$ | $4$| $5$ | 无 |
| $12$ | $10^5$ | $10^5$ | $10^9$| $6$ | 无 |
| $13\sim14$ | $10^5$ | $0$ | $4$| $7$ | 保证没有操作 1, 2 |
| $15\sim17$ | $10^5$ | $0$ | $4$| $8$ | 保证没有操作 2 |
| $18\sim25$ | $10^5$ | $10^5$ | $4$| $9$ | 无 |
对于所有数据,保证 $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$ 。$a,t$ 中的所有数都在 $s$ 中出现。
**保证给出的数组随机,但是询问的区间与询问的操作并不随机**。具体而言,初始给出的 $s,t$ 以及询问时可能给出的 $a$ 在符合上文所述限制之下的所有可能情况中等概率选取。而其他数据则不是随机的。