思路:
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...