POJ 3213 矩陣乘法(優化)

2022-04-30 11:18:15 字數 1262 閱讀 5875

思路:

1.暴力出奇蹟 n=1000 n^3矩陣乘法竟然能卡過。。。(tips:不要亂寫讀入優化,這玩意兒加了超時,不加ac……)

2. 注意題目中的「最多只能有乙個地方不一樣,,」

我就想到了 能不能用一行的和來優化一下。。一次算一行

我們可以手動模擬一下。。 發現了乙個規律……

(本人的草稿紙…… 略亂)

我就模擬了一下答案的第一行。。

發現:

先統計乙個sumb[i] +=a[i][j](1<=j<=m)

這個是b陣列第i行前m個數的和

sumc[i]是c陣列第i行的和

a[i][j]*sumb[j]應該等於sumc[i] (不信的話你可以手動模擬啊~)

這樣子是n^2的複雜度

如果不等於sumc[i]的話 就做一遍一行的矩陣乘法就ok了。。

整體複雜度 o (n^2)

簡單的矩陣乘法。。(是不是很短)

//by siriusren

#include

using namespace std;

#define s 1005

#define ff(x,y) for(int i=1;i<=x;i++)for(int j=1;j<=y;j++)

int n,p,m,a[s][s],b[s][s],c[s][s],ans[s][s];

int main()

printf("yes");

}

這是加了優化的

//by siriusren

#include

using namespace std;

#define siz 1005

int n,p,m,a[siz][siz],b[siz][siz],c[siz][siz],jy[siz],sumb[siz],sumc[siz];

signed main()

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

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

scanf("%d",&c[i][j]),sumc[i]+=c[i][j];

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

return

0; }

}puts("yes");

}

矩陣乘法優化 poj3318 隨機矩陣

給定矩陣a,b,c,求檢驗a b 是否等於c。n 500 普通矩陣乘法是o n 3 但是如果用乙個1 n的矩陣和n n矩陣相乘只需要o n 2 所以可以用乙個隨機矩陣r a b r c rand 隨機生成 0,rand max 的數 如果想要 0,n 內的隨機數 n比rand max 小,取餘 n比...

矩陣乘法優化DP

定義三個矩陣a,b,c,其中行和列分別為 m times n,n times p,m times p 其中行是從上往下數的,列是從左往右數的 c sum a times b 矩陣乘法具有結合律,但沒有交換律,可以乘方 求逆。做矩陣優化dp的題目步驟 1 quad 把 dp 方程推出來 假如不能手推,...

POJ 3420 矩陣乘法

題意 4 n的矩形中放入1 2的小矩形有多少種放法 分析 表示公式不會推導。沒找著有人推公式的證明了。求證明 f n f n 1 5 f n 2 f n 3 f n 4 手動算出來前4項,然後處理線性遞推式就好了 view code 1 include 2 include 3 include 4 i...