#D. 最长公共上升子序列

    传统题 1000ms 256MiB

最长公共上升子序列

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

对于序列 A=a1,a2,,anA = a_1, a_2, \dots, a_n,如果对于任意的 i[1,n)i \in [1, n),都有 ai<ai+1a_i < a_{i+1},则称之为上升的。

对于序列 A=a1,a2,,anA = a_1, a_2, \dots, a_nS=s1,s2,,skS = s_1, s_2, \dots, s_k,如果存在一组下标 1i1<i2<<ikn1 \le i_1 < i_2 < \dots < i_k \le n 使得 aij=sja_{i_j} = s_j,则称序列 SSAA 的子序列。换句话讲,可以通过删除序列 AA 中的一些项得到 SS

现在给定两个整数序列,编写程序找到它们的最长公共上升子序列。即最大长度的、两个序列公共的、上升子序列。

输入文件

第一行一个整数 nn,表示第一个序列的长度。

第二行 nn 个整数 aia_i,表示第一个序列中的元素,整数之间用空格分隔。

第三行一个整数 mm,表示第二个序列的长度。

第四行 mm 个整数 bib_i,表示第一个序列中的元素,整数之间用空格分隔。

输出文件

第一行一个整数 kk,表示最长公共上升子序列的长度。

第二行 kk 个整数,表示最长公共上升子序列,如果有多个序列,输出下标字典序最小的一个。

7
2 3 1 6 5 4 6
4
1 3 5 6
3
3 5 6 
5
1 2 0 2 1
3
1 0 1
2
0 1

提示

样例 3 见附加文件

对于 40%40\% 的数据,n,m20n,m \le 20

对于 100%100\% 的数据,n,m500n,m \le 5000ai,bi1090 \le a_i, b_i \le 10^9

2024 复赛集训模拟赛(二)

未参加
状态
已结束
规则
OI
题目
4
开始于
2024-10-7 8:30
结束于
2024-10-10 19:30
持续时间
3.5 小时
主持人
参赛人数
7