1.题目链接。题目大意:把一个矩阵分解成若干个矩阵的乘积。一个m*n的矩阵需要m*n个元素,但是分解之后,是所有小矩阵元素个数之和。问最少需要多少个元素才能把这个矩阵表示出来。
2.看到这个题有点懵逼,难道不是固定的mn个???,然后看了一眼样例,其实还是比较良心的,看到了样例种矩阵的秩为1,突然发现(猜想)如果一个矩阵式满秩的,是没办法减少元素数量的。但是如果不是满秩的,那些零行似乎就可以在其他小的矩阵里用一个元素(或者一行)存起来。虽然没有证明。。。。然后有一个矩阵的满秩分解定理:
A(m*n,r)=B(m*r,r)*C(r*n,r)
就是说一个大小为m*n,秩为r的矩阵,一定可以分解成两个矩阵乘积,并且一个是行满秩,一个是列满秩的。大小分别是m*r,和r*n.
由于满秩矩阵,不能再减少元素数量,所以我们只需要做一个分解即可,比较一下m*n,与(m+n)*r的大小。然后求矩阵的秩,可以高斯消元,当时随便在扣了一个模板就AC了。猝不及防。。。。‘由于代码比较丑,就不贴了,思路给了。