A94826.公共子序列对
普及/提高-
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
小明有两个整数序列,分别是长度为 N 的序列 S 和长度为 M 的序列 T。序列中的元素均为 1 到 105 之间的整数。
小明想知道,有多少对 (s′,t′) 满足以下条件:
- s′ 是 S 的一个子序列。
- t′ 是 T 的一个子序列。
- s′ 和 t′ 的内容完全相同(即长度相等,且对应位置的元素值相等)。
注意:
- 子序列是指从原序列中删除 0 个或多个元素,保留剩余元素相对顺序组成的新序列。
- 在本题中,即使两个子序列的内容完全相同,但如果它们是由原序列中不同下标的元素组成的,也被视为不同的子序列。例如,对于 S=(1,1),取第一个 1 和取第二个 1 形成的子序列内容都是 (1),但它们被视为两个不同的子序列。
- 空序列也是一种合法的子序列。
由于答案可能非常大,请输出答案对 109+7 取模后的结果。
输入格式
第一行包含两个整数 N 和 M,分别表示序列 S 和序列 T 的长度。
第二行包含 N 个整数 S1,S2,…,SN,表示序列 S 的元素。
第三行包含 M 个整数 T1,T2,…,TM,表示序列 T 的元素。
输出格式
输出一个整数,表示满足条件的子序列对 (s′,t′) 的数量,结果对 109+7 取模。
输入输出样例
输入#1
2 2 1 3 3 1
输出#1
3
输入#2
2 2 1 1 1 1
输出#2
6
输入#3
4 4 3 4 5 6 3 4 5 6
输出#3
16
输入#4
10 9 9 6 5 7 5 9 8 5 6 7 8 6 8 5 5 7 9 9 7
输出#4
191
输入#5
20 20 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
输出#5
846527861
说明/提示
说明/提示
数据范围
- 对于 100% 的数据:1≤N,M≤2000,1≤Si,Ti≤105。
- 输入保证所有数值均为整数。
样例 1 解释
- S 的子序列有:(),(1),(3),(1,3)。
- T 的子序列有:(),(3),(1),(3,1)。
- 内容相同的配对有:
- 均为空序列 ():1 种。
- 内容为 (1):S 取 1,T 取 1,共 1×1=1 种。
- 内容为 (3):S 取 3,T 取 3,共 1×1=1 种。
- 总计 1+1+1=3 种。
样例 2 解释
- S 的子序列:(),(1)idx=1,(1)idx=2,(1,1)。
- T 的子序列:(),(1)idx=1,(1)idx=2,(1,1)。
- 匹配情况:
- 空序列:1 种。
- 内容 (1):S 有 2 个 (1),T 有 2 个 (1),共 2×2=4 种。
- 内容 (1,1):S 有 1 个,T 有 1 个,共 1×1=1 种。
- 总计 1+4+1=6 种。