开始 2026-03-21 00:00:00

童织码编程:月赛B组——3

结束 2026-04-12 00:00:00
Contest is over.
当前 2026-06-10 08:16:00

D. 26年3月-B组(才俊)D. 基因序列

描述

在生物信息学研究中,研究员常需要比较两段基因序列的相似度。现有两段由核苷酸编号组成的序列 A 和 B,长度分别为 N 和 M。序列中的每个元素都是一个 [1,10^5] 之间的整数。

在比对过程中,研究员会从序列 A 中选出一个子序列 A′ ,再从序列 B 中选出一个子序列 B′。

如果子序列 A′与子序列 B′完全相同(即长度相同且对应位置的元素相等),则称其为一对“匹配子序列对”。

需要注意的是:

1.下标敏感:即使两个子序列所含的元素数值序列相同,只要选取的元素在原序列中的下标集合不同,就视为不同的子序列。

2.空序列:根据研究定义,从 A 和 B 中均不选取任何元素所构成的空序列对,也算作一对匹配子序列对。

3.子序列:从原序列中选择若干元素(可以不选),在不改变它们相对前后顺序的前提下,提取出来所组成的新序列。

请你编写程序,计算两段序列中共有多少对不同的“匹配子序列对”。由于答案可能很大,请输出对 10^9+7 取模后的结果。

输入

第一行包含两个整数 N 和 M,分别表示序列 A 和 B 的长度。

第二行包含 N 个整数,表示序列 A 的各个元素。

第三行包含 M 个整数,表示序列 B 的各个元素。

输出

输出一个整数,表示匹配子序列对的总数对 10^9+7 取模后的结果。

样例

输入

2 2
1 3
3 1

输出

3

输入

2 2
1 1
1 1

输出

6

输入

4 4
3 4 5 6
3 4 5 6

输出

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

样例 1 说明:

样例 2 说明:

数据范围

对于 100% 的数据,满足 1≤N,M≤2000,1≤Ai,Bi≤10^5。


Submit

登录

注册
时间限制 1 秒
内存限制 128 MB
提交