#3546. J 说假话

J 说假话

题目描述

小 I 正在学习使用 Pytorch。这是一个非常热门的用于机器学习训练的 Python 库。

小 I 注意到,Pytorch 中对于张量运算有称作“广播”(broadcast)的机制。你可以认为张量是高维数组。对于一个 kk 维张量 AA,我们用长度为 kk 的序列 (a1,a2,⋯ ,ak)(a_1,a_2,\cdots,a_k) 表示其各个维度的长度,也就是说 AA 是一个 a1×a2×⋯×aka_1 \times a_2 \times \cdots \times a_k 的张量。

对于两个张量 AA 和 BB,设它们的维度分别为 (a1,a2,⋯ ,am)(a_1,a_2,\cdots,a_m) 和 (b1,b2,⋯ ,bn)(b_1,b_2,\cdots,b_n),称 AA 和 BB 是 可广播的,当且仅当以下性质成立:

  • 对于任意整数 0≤i≤min⁡(n,m)−10 \le i \le \min(n,m) - 1,要么 am−i=bn−ia_{m-i} = b_{n-i},要么 am−ia_{m-i} 和 bn−ib_{n-i} 中至少有一个是 11。

现在小 I 有两个张量,它们的维度分别是 (p1,p2,⋯ ,pm)(p_1,p_2,\cdots,p_m) 和 (q1,q2,⋯ ,qn)(q_1,q_2,\cdots,q_n),它们不一定是可广播的。

为此,小 I 可以使用 Pytorch 内置的函数进行若干次操作(可以不做操作),每次操作对序列 pp 或 qq 进行以下修改:

  • 选择 pp 或 qq,在选定序列的任意一个位置插入一个 11。

小 I 想知道他最少要多少次操作才能让两个张量变为可广播的。

输入格式

输入的第一行两个整数 m,n(1≤m,n≤2000)m,n(1 \le m,n \le 2000) 表示两个张量的维度。

第二行 mm 个整数 p1,p2,⋯ ,pm(1≤pi≤2000)p_1,p_2,\cdots,p_m (1 \le p_i \le 2000) 描述第一个张量每个维度的长度。

第三行 nn 个整数 q1,q2,⋯ ,qn(1≤qi≤2000)q_1,q_2,\cdots,q_n (1 \le q_i \le 2000) 描述第二个张量每个维度的长度。

输出格式

输入一行一个整数表示最少的插入 11 的数量使得两个张量变为可广播的。

4 2
2 1 3 2
4 2
1

说明/提示

在序列 qq 的第二个位置之前插入一个 11(得到 4 1 2),两个张量就会变为可广播的。