A94830.排列的最长公共子序列

普及+/提高

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

给定 KK 个长度为 NN 的排列。
每个排列都包含 11NN 的所有整数,只是顺序不同。

请你求出一个最长的序列,使得这个序列是这 KK 个排列中每一个排列的子序列。
输出这个最长公共子序列的长度。

子序列的定义
从原序列中删除若干个(也可以是 0 个)元素,剩下的元素保持原有相对顺序组成的序列。

输入格式

第一行包含两个整数 NNKK,分别表示排列的长度和排列的个数。

接下来 KK 行,每行包含 NN 个整数,表示一个 11NN 的排列。

输出格式

输出一个整数,表示最长公共子序列的长度。

输入输出样例

  • 输入#1

    4 3
    1 4 2 3
    4 1 2 3
    1 2 4 3

    输出#1

    3

说明/提示

提示

样例 1 解释

序列 [1,2,3][1, 2, 3] 是三个排列的公共子序列:

  • 第 1 个: 1 4 2 3
  • 第 2 个: 4 1 2 3
  • 第 3 个: 1 2 4 3

长度为 3。虽然 [1,4,3][1, 4, 3] 也是部分排列的子序列,但它不是第 3 个排列的子序列(因为在第 3 个排列中 4 在 1 后面,但 4 在 3 前面,顺序对不上),所以不能选。

数据范围

  • 对于 100%100\% 的数据:1N10001 \le N \le 10002K52 \le K \le 5
  • 输入保证每一行都是 1N1 \sim N 的全排列。
首页