A94830.排列的最长公共子序列
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
给定 K 个长度为 N 的排列。
每个排列都包含 1 到 N 的所有整数,只是顺序不同。
请你求出一个最长的序列,使得这个序列是这 K 个排列中每一个排列的子序列。
输出这个最长公共子序列的长度。
子序列的定义:
从原序列中删除若干个(也可以是 0 个)元素,剩下的元素保持原有相对顺序组成的序列。
输入格式
第一行包含两个整数 N 和 K,分别表示排列的长度和排列的个数。
接下来 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≤N≤1000,2≤K≤5。
- 输入保证每一行都是 1∼N 的全排列。