Codevs No 3147 矩陣乘法2

2022-08-22 21:57:13 字數 1327 閱讀 4951

2016-06-01 17:33:30

題目大意:

給定兩個大小相同的正方形矩陣a,b.多次詢問,每次求乘後矩陣的乙個子矩陣所有元素的和.

解法:首先想到暴力.

預處理n^3,詢問模擬掃,這常數簡直瞬間**啊

當然是可以優化的.

列出子矩陣的元素表示式,就會發現有一些元素//矩陣乘法2 (codevs no.3147)

//矩陣乘法

#include

#include

using namespace std;

const int maxn=2010;

int map1[maxn][maxn];

int map2[maxn][maxn];

long long ans;

int n,m;

int a,b,c,d;

int main()

}for(int i=1;i<=n;i++)

}for(int i=1;i<=m;i++)

printf("%lld\n",ans);

}return 0;

}的乘積可以做乘法分配律

所以直接放棄求出子矩陣的確切值,按照分配律的特點組合資料.

我們對a(乘法的時候乘行)進行列字首和,對b(乘法的時候乘列)進行行字首和

最後所有元素的和就可以表示成sigma((a[i][dbound]-a[i][ubound-1])*(b[i][rbound]-b[i][lbound-1]));

(ubound,dbound,lbound,rbound表示小矩陣的上下左右)

1

//矩陣乘法2 (codevs no.3147)2//

矩陣乘法

3 #include4 #include5

using

namespace

std;

6const

int maxn=2010;7

intmap1[maxn][maxn];

8int

map2[maxn][maxn];

9long

long

ans;

10int

n,m;

11int

a,b,c,d;

12int

main()

1322}23

for(int i=1;i<=n;i++)

2430}31

for(int i=1;i<=m;i++)

3241 printf("

%lld\n

",ans);42}

43return0;

44 }

矩陣乘矩陣

7 15 矩陣a乘以b 15分 給定兩個矩陣a和b,要求你計算它們的乘積矩陣ab。需要注意的是,只有規模匹配的矩陣才可以相乘。即若a有r a 行 c a 列,b有r b 行 c b 列,則只有c a 與r b 相等時,兩個矩陣才能相乘。輸入格式 輸入先後給出兩個矩陣a和b。對於每個矩陣,首先在一行中...

tensorflow點乘與矩陣乘

若 w 為 m 1 的矩陣,x 為 m n 的矩陣,那麼通過點乘結果就會得到乙個 mn 的矩陣。若 w 為 m n 的矩陣,x 為 m n 的矩陣,那麼通過點乘結果就會得到乙個 mn 的矩陣。w的列數只能為 1 或與x的列數相等 即n w的行數與x的行數相等 才能進行乘法運算。若 w 為 m p 的...

codevs3147 矩陣乘法 2 (推導小公式)

題目描述 description 給出兩個n n的矩陣,m次詢問它們的積中給定子矩陣的數值和。為防止卡評測,已減小資料範圍並調低時限。輸入描述 input description 第一行兩個正整數n,m。接下來n行,每行n個非負整數,表示第乙個矩陣。接下來n行,每行n個非負整數,表示第二個矩陣。接下...