만드는 중입니다

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

행렬 곱셈 순서 4

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

요약
행과 열의 개수가 단조 감소하는 행렬 N개를 주어진 순서대로 곱할 때 필요한 곱셈 횟수의 최솟값을 구합니다.
난이도

어려움10점 중 8점

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

문제

크기가 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×22 \times 2인 경우에 행렬의 곱 ABCABC를 구하는 경우를 생각해보자.

  • ABAB를 먼저 곱하고 CC를 곱하는 경우, (AB)C(AB)C에 필요한 곱셈 연산의 수는 5×3×2+5×2×2=30+20=505 \times 3 \times 2 + 5 \times 2 \times 2 = 30 + 20 = 50번이다.
  • BCBC를 먼저 곱하고 AA를 곱하는 경우, A(BC)A(BC)에 필요한 곱셈 연산의 수는 3×2×2+5×3×2=12+30=423 \times 2 \times 2 + 5 \times 3 \times 2 = 12 + 30 = 42번이다.

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

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

입력

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

둘째 줄부터 N+1N+1번째 줄까지, i+1i+1번째 줄에는 ii번째 행렬의 크기 rir_i과 cic_i가 주어진다. (1≤ri,ci≤10,0001 \le r_i, c_i \le 10{,}000)

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

주어지는 행렬의 크기는 단조감소함이 보장된다. 즉, 1≤i<j≤n1 \le i < j \le n에 대해 ri≥rjr_i \ge r_j이고 ci≥cjc_i \ge c_j이다.

출력

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

예제1

  1. 예제 1

    입력
    3
    5 3
    3 2
    2 2
    
    예상 출력
    42