poj3318 隨機化驗證

2021-08-03 22:15:50 字數 657 閱讀 3641

題意:驗證兩個矩陣a * b相乘是否等於c;

思路:直接相乘的話n^3,不行;

可以加入乙個輔助行矩陣h,如果a * b = c,那麼 h * a * b =  h * c,因為h * a 之後還是乙個行矩陣,時間複雜度為n^2。不過為了避免錯誤,h陣列需要隨機。

code:

#include#include#include#includeusing namespace std;

const int maxn = 500 + 10;

int a[maxn][maxn],b[maxn][maxn],c[maxn][maxn];

int h[maxn];

int d[maxn],e[maxn],f[maxn];

int n;

bool is_()

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

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

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

return true;

}int main()

}if(ans)

puts("yes");

else puts("no");

}return 0;

}

矩陣乘法優化 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比...

隨機化演算法

隨機化演算法的主要目的是希望讓隨機發生在演算法上,而不是發生在輸入分布上,這樣的話,沒有特別的輸入會引起我們的演算法的最壞情況。即使你最壞的敵人也無法產生最壞的輸入陣列。因為隨機排列使得輸入次序不再相關。只有在隨機數生成器產生乙個不走運的排列時,隨機演算法才會執行得很差。一.隨機優先順序陣列法 我們...

隨機化搜尋

參與考古挖掘的小明得到了乙份藏寶圖,藏寶圖上標出了 nn 個深埋在地下的寶藏屋,也給出了這 nn 個寶藏屋之間可供開發的mm 條道路和它們的長度。小明決心親自前往挖掘所有寶藏屋中的寶藏。但是,每個寶藏屋距離地面都很遠,也就是說,從地面打通一條到某個寶藏屋的道路是很困難的,而開發寶藏屋之間的道路 則相...