日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ACM入门之【哈希】

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ACM入门之【哈希】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

哈希在競賽中也是一個很常用,且非常厲害的一個算法。

哈希的主要思想就是把一個東西轉換成一個大整數,這樣比較兩個東西是否相等的就只要比較兩個整數是否相等就行了,
比較的時間復雜度是O(1)的。

舉一個比較常見的例子:比較倆字符串是否相等,我們可以將字符串變成一個值,然后直接比較這倆字符串的哈希值就行了。
可能你會有疑問?在c++中string 不是可以直接就比較了么? 為啥還要用哈希呢?
假如人家問的是倆矩陣是否相等呢?假如人家問這個矩陣是否在一個大矩陣中出現過呢?
那么如何存矩陣呢?我們就可以用二維哈希,將矩陣也映射成一個哈希值,這樣比較矩陣直接比較哈希值就行了。

其實,通過上面你已經對哈希有了一個初步的了解了。哈希它其實就是將一些特別難存的東西,通過某種手法變成一個唯一的值,
然后只需比較哈希值就行了。

哈希常見的幾種模型:

  • 一維哈希(字符串)
  • 二維矩陣哈希

核心思想:將字符串看成P進制數,P的經驗值是131,13331,233,2333,10007等質數 取這些值的沖突概率低
取模的時候選一個較大的質數避免沖突。
小技巧:取模的數用2^64,這樣直接用unsigned long long存儲,溢出的結果就是取模的結果

一維哈希模板:

typedef long long int LL; const int M=233;//是我們自己選擇的進制數,一般可以選233,2333,10007等質數 const int mod=1e9+7;//一般選一個比較大的質數 LL get(string s)//獲取字符串對應的哈希值 {LL sum=0;for(int i=0;i<s.size();i++) sum=(sum*M+s[i]-'a')%mod;return sum; } typedef unsigned long long int ull; const int N=1e5+10; const int M=233; ull h[N],base[N]; ull query(int l,int r)//獲取字符串[l,r]的哈希值 {return h[r]-h[l-1]*base[r-l+1]; } void init(string s)//初始化哈希 {int n=s.size();s="0"+s;//讓其下標從1開始base[0]=1;for(int i=1;i<=n;i++){h[i]=h[i-1]*M+s[i];base[i]=base[i-1]*M;// base[i]=M^i} } ull merge(int l1, int r1, int l2, int r2) //求[l1,r1],[l2,r2]子串并的哈希值 {return query(l1, r1) * base[r2 - l2 + 1] + query(l2, r2); }

字符串哈希入門:
P3370 【模板】字符串哈希
841. 字符串哈希
103. 子串查找

二維哈希模板

typedef long long int ll; const int N=1010; ll h[N][N],base1[N],base2[N]; int a[N][N],n,m; void init()//構建 {base1[0]=base2[0]=1;for(int i=1;i<N;i++){base1[i]=base1[i-1]*131;base2[i]=base2[i-1]*233;}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)h[i][j]=h[i][j-1]*131+a[i][j];//行哈希for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)h[i][j]=h[i-1][j]*233+h[i][j];//列哈希 } ll query(int x1,int y1,int x2,int y2)//查詢矩陣的哈希值 {return h[x2][y2]-h[x2][y1-1]*base1[y2-y1+1]-h[x1-1][y2]*base2[x2-x1+1]+h[x1-1][y1-1]*base1[y2-y1+1]*base2[x2-x1 + 1]; }

二維哈希習題:
Matrix
矩陣

好的文章推薦:
哈希入門
哈希基礎例題
二維哈希

總結

以上是生活随笔為你收集整理的ACM入门之【哈希】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 高清国产一区二区 | 日韩精品一区二区三区av | 蜜臀人妻四季av一区二区不卡 | 日韩欧美视频在线播放 | a级黄色小视频 | 五月天激情婷婷 | 亚洲成av人片 | 欧美福利片在线观看 | 午夜片在线观看 | 催眠美妇肉奴系统 | 又黄又爽在线观看 | 青草视频在线 | 中文字幕免费高清网站 | 久久riav| 性色视频在线 | 美女网站免费黄 | 鲁鲁在线| 国产大学生av | 亚洲一区二区三区在线看 | 成人小网站 | 成人自拍视频在线观看 | 在线xxxxx| 欧美顶级少妇做爰hd | 中文字幕日韩精品无码内射 | 一级黄色短视频 | 一级黄片毛片 | 亚洲精品国产精品乱码不99 | 久久中字| 午夜一区二区三区免费 | 刘亦菲毛片 | 青青草激情视频 | 激情综合五月网 | 亚洲精品白浆高清久久久久久 | 国产毛毛片 | 九月婷婷综合 | 综合久久五月 | 国产精品乱码久久久久久 | 日本免费黄网站 | 全部免费毛片在线播放 | 18禁一区二区三区 | 亚洲无人区码一码二码三码的含义 | 中国一级特黄真人毛片免费观看 | 爱操在线| 日韩一区二区三区视频 | 国产精品欧美综合亚洲 | 亚洲天堂视频在线 | 国产人澡人澡澡澡人碰视频 | 欧美激情校园春色 | 扒下小娇妻的内裤打屁股 | 成人三级图片 | 三级黄色免费片 | 欧洲成人在线 | 日本少妇毛茸茸高潮 | 在线不卡av | 色悠悠视频 | 欧美日韩一区二区三区不卡视频 | 美女毛片在线观看 | 香蕉大久久 | a毛片在线观看 | 女人av| 日本免费一区二区三区 | 福利视频一区 | 2019国产在线 | 91久久精品国产 | 深夜视频一区二区三区 | 欧洲av在线| 毛片成人网 | 狠狠操人人干 | 青青草av在线播放 | 99福利视频导航 | 欧美黄色免费视频 | 69亚洲乱人伦 | 国产精品高清无码 | 不卡av片 | 久草电影网站 | 人人看人人射 | 鬼灭之刃柱训练篇在线观看 | 日本一区二区精品视频 | 欧美日韩一区二区三区在线播放 | 中文免费视频 | 欧洲自拍偷拍 | 麻豆av一区二区三区在线观看 | 超碰女人 | 日韩亚洲欧美一区二区三区 | 97人人人| 久久91亚洲人成电影网站 | 污黄视频网站 | 成人激情免费 | 激情婷婷六月 | 午夜一区二区三区免费 | 性感美女一区二区三区 | www.色亚洲| 北条麻妃99精品青青久久 | 亚洲精品成人无码熟妇在线 | 成年女人色毛片 | 亚洲黄色大全 | 草草影院在线观看 | 一二三区在线视频 | 中文字幕无线精品亚洲乱码一区 |