A6970. 排列的最长公共子序列
编程题
普及+/提高
知识点
题目描述
给定 $K$ 个长度为 $N$ 的排列。
每个排列都包含 $1$ 到 $N$ 的所有整数,只是顺序不同。
请你求出一个最长的序列,使得这个序列是这 $K$ 个排列中**每一个**排列的子序列。
输出这个最长公共子序列的长度。
**子序列的定义**:
从原序列中删除若干个(也可以是 0 个)元素,剩下的元素保持原有相对顺序组成的序列。
每个排列都包含 $1$ 到 $N$ 的所有整数,只是顺序不同。
请你求出一个最长的序列,使得这个序列是这 $K$ 个排列中**每一个**排列的子序列。
输出这个最长公共子序列的长度。
**子序列的定义**:
从原序列中删除若干个(也可以是 0 个)元素,剩下的元素保持原有相对顺序组成的序列。
输入格式
第一行包含两个整数 $N$ 和 $K$,分别表示排列的长度和排列的个数。
接下来 $K$ 行,每行包含 $N$ 个整数,表示一个 $1$ 到 $N$ 的排列。
接下来 $K$ 行,每行包含 $N$ 个整数,表示一个 $1$ 到 $N$ 的排列。
输出格式
输出一个整数,表示最长公共子序列的长度。
输入输出样例
输入 #1
4 3 1 4 2 3 4 1 2 3 1 2 4 3
输出 #1
3
说明/提示
## 提示
### 样例 1 解释
序列 $[1, 2, 3]$ 是三个排列的公共子序列:
- 第 1 个: **1** 4 **2** **3**
- 第 2 个: 4 **1** **2** **3**
- 第 3 个: **1** **2** 4 **3**
长度为 3。虽然 $[1, 4, 3]$ 也是部分排列的子序列,但它不是第 3 个排列的子序列(因为在第 3 个排列中 4 在 1 后面,但 4 在 3 前面,顺序对不上),所以不能选。
### 数据范围
- 对于 $100\%$ 的数据:$1 \le N \le 1000$,$2 \le K \le 5$。
- 输入保证每一行都是 $1 \sim N$ 的全排列。
### 样例 1 解释
序列 $[1, 2, 3]$ 是三个排列的公共子序列:
- 第 1 个: **1** 4 **2** **3**
- 第 2 个: 4 **1** **2** **3**
- 第 3 个: **1** **2** 4 **3**
长度为 3。虽然 $[1, 4, 3]$ 也是部分排列的子序列,但它不是第 3 个排列的子序列(因为在第 3 个排列中 4 在 1 后面,但 4 在 3 前面,顺序对不上),所以不能选。
### 数据范围
- 对于 $100\%$ 的数据:$1 \le N \le 1000$,$2 \le K \le 5$。
- 输入保证每一行都是 $1 \sim N$ 的全排列。