相信很多人不是做不出答案,而是做不出答案依然没有分,有分了却不是满分。
本题考的不只是矩阵运算,而是时间复杂度和int型表示范围
首先,按照原来的运算顺序,是肯定不行的,n*n*d+n*d*n,最大情况循环10^9次。
把括号全给它拆咯!有结合律不影响结果,顺序为(w·q)*(kT*v),d*d*n+n*d*d,循环10^6次
其次,考虑到这点了还是不能拿到满分,因为这么多数的运算,int型已经表示不过来了,用long long型才可以。
#include <iostream>
#include <map>
using namespace std;
map<int, map<int, int>> q, k, v; //q,k,v
map<int, int> w;
map