#5202. MCHAIN - Nhân chuỗi ma trận

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một chuỗi gồm N ma trận A_1, A_2, ..., A_N . Ma trận A_i có kích thước p_{i-1} \times p_i . Phép nhân một ma trận kích thước a \times b với một ma trận b \times c sẽ cần a \times b \times c phép nhân vô hướng. Vì phép nhân ma trận có tính kết hợp, ta có thể đặt dấu ngoặc theo nhiều cách khác nhau để tính tích A_1A_2...A_N , và mỗi cách sẽ cho một tổng số phép nhân vô hướng khác nhau.

Hãy tìm cách đặt dấu ngoặc để số phép nhân vô hướng là ít nhất.

Dữ liệu:

  • Dòng đầu tiên chứa số nguyên n\ (1 \le n \le 100) .
  • Dòng thứ hai chứa n+1 số nguyên p_0, p_1, ..., p_n\ (1 \le p_i \le 500) mô tả kích thước của n ma trận.

Kết quả: Một số nguyên duy nhất là số phép nhân vô hướng tối thiểu.

Ví dụ:

Dữ liệu:

3
10 20 30 40

Kết quả:

18000

Giải thích: Có 3 ma trận: A_1(10 \times 20) , A_2(20 \times 30) , A_3(30 \times 40) .

  • Cách 1: (A_1A_2)A_3 . Chi phí: (10 \times 20 \times 30) + (10 \times 30 \times 40) = 6000 + 12000 = 18000 .
  • Cách 2: A_1(A_2A_3) . Chi phí: (20 \times 30 \times 40) + (10 \times 20 \times 40) = 24000 + 8000 = 32000 . Chi phí nhỏ nhất là 18000 .

Giới hạn:

  • 1 \le n \le 100
  • 1 \le p_i \le 500