poj 3690 Constellations 矩陣的hash
給定一個n*m矩陣和t個p*q的矩陣,求這t個矩陣有多少個是n*m的子矩陣。
矩陣都是01矩陣,只有'0' '*'
矩陣的hash,先將每行q列hash,得到一個新矩陣,然後再每列p行hash 【注意行列hash時候取的magic數不能一樣,不然很容易沖突,會WA,最好取2個素數】
這樣原矩陣的每個子矩陣都由一個數字代替了,之後用map判斷就夠了。
注意:不能事先將原矩陣的所有子矩陣hash值存在map裡,然後比較,由於子矩陣數量太大會MLE。
map裡存的應該是t個矩陣的hash值,注意有重復的矩陣,次數還是要加上。
#include
#include
#include
#include
#include
#include