P6514 [QkOI#R1] Quark and Strings
题目描述
你需要维护一个字符串序列 $\{S_n\}$,其中有 $n$ 个字符串,初始全为空。接下来有 $q$ 次操作,支持两种操作,下面设当前为第 $i$ 次操作,且本题中字符集为 $[1,q]\cap \N_+$:
- `1 l r`,表示在所有编号在 $[l,r]$ 内的字符串末尾添加字符 $i$,这里 $i$ 是一个 $[1,q]$ 范围内的整数。
- `2 l r`,表示询问所有编号在 $[l,r]$ 内的字符串的最长公共子序列长度。当 $l=r$ 时,我们认为其最长公共子序列长度即为该字符串的长度。
输入格式
第一行两个正整数 $n,q$。
接下来 $q$ 行每行三个正整数形如 `1 l r` 或 `2 l r`。
输出格式
对于每次操作 $2$,输出一行非负整数作为你的答案。
说明/提示
### 样例解释
对于第一组样例:
第一次操作后,序列为 $\{[1],[1],[1],[],[]\}$。
第二次操作后,序列为 $\{[1,2],[1,2],[1,2],[2],[2]\}$。
第三次操作,容易发现询问的最长公共子序列为 $[2]$,长度为 $1$。
---
### 数据范围
**本题采用捆绑测试。**
- Subtask 1(10 pts):$n,q\le 500$。
- Subtask 2(20 pts):$n,q\le 1000$。
- Subtask 3(15 pts):$n\le 1000$,操作 $1$ 不超过 $500$ 次,时限 $2000$ms。
- Subtask 4(15 pts):$n\le 1000$,操作 $2$ 不超过 $500$ 次,时限 $2000$ms。
- Subtask 5(40 pts):无特殊限制,时限 $3000$ms。
对于 $100\%$ 的数据,$1\le n,q\le 10^5$,除了特殊标明的 Subtask,其它 Subtask 时限均为 $1000$ms。