만드는 중입니다

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

행렬 곱셈 순서 3

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

요약
행렬 N개의 크기가 주어질 때 순서를 바꾸지 않고 모두 곱하는 데 필요한 최소 곱셈 횟수를 구합니다. N은 최대 200,000입니다.
난이도

어려움10점 중 9점

유형
동적 계획법, 그리디, 힙
정답자
아직 제출이 없습니다

문제

크기가 N×MN \times M인 행렬 AA와 M×KM \times K인 행렬 BB를 곱할 때 필요한 곱셈 연산은 총 N×M×KN \times M \times K번이다. 행렬 NN개를 곱할 때 필요한 곱셈 연산의 수는 곱하는 순서에 따라 달라진다.

예를 들어 AA의 크기가 5×35 \times 3, BB의 크기가 3×23 \times 2, CC의 크기가 2×62 \times 6인 경우를 생각해 보자.

  • ABAB를 먼저 곱한 뒤 CC를 곱하면 (AB)C(AB)C에 필요한 곱셈 연산의 수는 5×3×2+5×2×6=30+60=905 \times 3 \times 2 + 5 \times 2 \times 6 = 30 + 60 = 90번이다.
  • BCBC를 먼저 곱한 뒤 AA를 곱하면 A(BC)A(BC)에 필요한 곱셈 연산의 수는 3×2×6+5×3×6=36+90=1263 \times 2 \times 6 + 5 \times 3 \times 6 = 36 + 90 = 126번이다.

같은 곱셈이라도 순서에 따라 곱셈 연산의 수가 달라진다.

행렬 NN개의 크기가 주어졌을 때, 모든 행렬을 곱하는 데 필요한 곱셈 연산 횟수의 최솟값을 구하는 프로그램을 작성하시오. 입력으로 주어진 행렬의 순서를 바꾸면 안 된다.

입력

첫째 줄에 행렬의 개수 NN(1≤N≤200,0001 \le N \le 200{,}000)이 주어진다.

둘째 줄부터 NN개 줄에 행렬의 크기 rr과 cc가 주어진다. (1≤r,c≤10,0001 \le r, c \le 10{,}000)

입력으로는 항상 순서대로 곱셈을 할 수 있는 크기만 주어진다.

출력

첫째 줄에 입력으로 주어진 행렬을 곱하는 데 필요한 곱셈 연산의 최솟값을 출력한다. 정답은 263−12^{63}-1보다 작거나 같은 자연수이다. 최악의 순서로 연산하더라도 연산 횟수는 263−12^{63}-1보다 작거나 같다.

예제1

  1. 예제 1

    입력
    3
    5 3
    3 2
    2 6
    
    예상 출력
    90