만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

쉽게 브로드캐스트 가능한 텐서

면접 대비

시간 제한1초메모리 제한2048 MB

요약
두 차원 크기 배열을 오른쪽부터 맞췄을 때 겹치는 모든 쌍이 같거나 1을 포함하도록, 삽입할 1의 최소 개수를 구합니다.
난이도

보통10점 중 5점

유형
동적 계획법, 배열
정답자
아직 제출이 없습니다

문제

Little I는 머신러닝 학습에 널리 쓰이는 파이썬 라이브러리 PyTorch를 배우고 있다.

Little I는 PyTorch에 '브로드캐스팅'이라는 텐서 연산 기능이 있다는 것을 알게 되었다. 텐서는 다차원 배열로 생각할 수 있다. kk차원 텐서 AA에서 길이가 kk인 수열 (a1,a2,…,ak)(a_1, a_2, \ldots, a_k)는 각 차원의 길이를 나타낸다. 즉 AA는 크기가 a1×a2×…×aka_1 \times a_2 \times \ldots \times a_k인 텐서다.

차원이 각각 (a1,a2,…,am)(a_1, a_2, \ldots, a_m), (b1,b2,…,bn)(b_1, b_2, \ldots, 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일 때, 그리고 그때에만 쉽게 브로드캐스트 가능하다.

Little I는 차원이 (p1,p2,…,pm)(p_1, p_2, \ldots, p_m), (q1,q2,…,qn)(q_1, q_2, \ldots, q_n)인 두 텐서를 가지고 있는데, 이 둘은 쉽게 브로드캐스트 가능하지 않을 수 있다.

Little I는 두 텐서를 쉽게 브로드캐스트 가능하게 만들려고 여러 번 연산을 할 수 있다(연산을 하지 않아도 된다). 각 연산은 pp 또는 qq를 골라 그 수열의 원하는 위치에 11을 하나 삽입한다.

두 텐서를 쉽게 브로드캐스트 가능하게 만드는 데 필요한 연산 횟수의 최솟값을 구하라.

입력

첫 번째 줄에 두 텐서의 차원 수를 뜻하는 정수 mm과 nn (1≤m,n≤20001 \le m, n \le 2000)이 주어진다.

두 번째 줄에는 첫 번째 텐서의 각 차원 길이를 뜻하는 정수 mm개 p1,p2,…,pmp_1, p_2, \ldots, p_m (1≤pi≤20001 \le p_i \le 2000)이 주어진다.

세 번째 줄에는 두 번째 텐서의 각 차원 길이를 뜻하는 정수 nn개 q1,q2,…,qnq_1, q_2, \ldots, q_n (1≤qi≤20001 \le q_i \le 2000)이 주어진다.

출력

두 텐서를 쉽게 브로드캐스트 가능하게 만드는 데 필요한 11의 최소 삽입 횟수를 한 줄에 출력한다.

힌트

예시에서 수열 qq의 두 번째 위치 앞에 11을 삽입하면 4,1,24, 1, 2가 되고, 이로써 두 텐서가 쉽게 브로드캐스트 가능해진다.

예제1

  1. 예제 1

    입력
    4 2
    2 1 3 2
    4 2
    
    예상 출력
    1