牛客網 二維雜湊(雜湊的正確姿勢)

2021-08-07 11:40:52 字數 1249 閱讀 8586

時間限制:1秒

空間限制:131072k

給出乙個n * m的矩陣。讓你從中發現乙個最大的正方形。使得這樣子的正方形在矩陣中出現了至少兩次。輸出最大正方形的邊長。

第一行兩個整數n, m代表矩陣的長和寬;

接下來n行,每行m個字元(小寫字母),表示矩陣;

輸出乙個整數表示滿足條件的最大正方形的邊長。
示例1

5 10

ljkfghdfas

isdfjksiye

pgljkijlgp

eyisdafdsi

lnpglkfkjl

3

對於30%的資料,n,m≤100;

對於100%的資料,n,m≤500;

無符號長整型溢位自動對2^64取餘,設定素數進製;

用鄰接表代替map記錄提高查詢速度

1313 ,31,123,1789,13131,197。。。

ull seed1 =1313, seed2 =13131;constll d1=101,d2=193;ulint seedx =233;ulint seedy =23333;constull base=123;。。。

#include #include #include #include using namespace std;

const int n = 1e6+10;

typedef unsigned long long ull;

const ull mod = 100007;

char str[505][505];

ull seed[2]=, d[2][n], hash1[505][505], hash2[505][505];

int head[n], cnt=0,n, m;

void init()

{ d[0][0]=1,d[1][0]=1;

for(int i=1;i

二維陣列的查詢(牛客網)

一 題目描述 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。二 我的思路 設計思路 從第一行到最後一行起,每一行都是 先用二分查詢找到本行比target小的...

牛客網 二維陣列中的查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解題思路 從左下角開始比較,如果 target 比當前陣列數字小,那麼就向上一行找,然後遍歷這行的,如果 ta...

poj 3690(二維雜湊)

感覺二維雜湊的思想跟一維的差不多,比如要匹配的字串是p q的大小,先儲存好以下標為i,j為一列的末尾元素的hash值,然後一q大小的列 進行 行的拓展,行列的思想都一樣,滾動。include include include include includeusing namespace std typ...