题面
Description
N(2<=N<=500)个矩阵相乘,求进行乘法的最少次数,我们认为两个矩阵A(m*n)B(np)的乘法次数为 m × n × p m\times n\times p m×n×p次。
Input
第一行是整数N,接下来N行是对每个矩阵的描述,一行两个整数a,b,(1<=a,b<=50)a表示行,b表示列。输入确保能够相乘。
Output
一行输出最少乘法次数。
Sample Input
3
50 10
10 20
20 5
Sample Output
3500
思路
首先我们需要明确一点,矩阵没有交换律。
这点很重要。
首先题目说 “ 输入确保能够相乘 ” ,如果我们能够证明:矩阵的行和列是首尾相接的,设第 i i i个矩阵行为 x i x_i xi,列为 y i y_i yi,也就是说: ∀ 0 < i < n \forall 0<i<n ∀0<i<n满足 y i = x i + 1 y_i=x_{i+1} yi=xi+1,那么这一题就可以用区间 d p dp dp求解了。
证明:首先假设:
x 1 , y 1 x 2 , y 2 … … x n , y n x_1,y_1 \\x_2,y_2 \\…… \\x_n,y_n x1,y1x2,y2……x