Hi :)
In recent Codeforces contests , we see many problem with "Hashing" tag ! so I decide to learn Hashing algorithms and formula !
What must I do ?
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
Hi :)
In recent Codeforces contests , we see many problem with "Hashing" tag ! so I decide to learn Hashing algorithms and formula !
What must I do ?
Name |
---|
Hashing = String in Base X Mod Y
X and Y are integers you have to choose i choose X = 29 or X = 43 and i choose Y as 1e9 + 7 or 1e15 + 7
or whatever what is bad about it is that two strings can have the same mod which is unlikely
you can easily get hash of strings in O(1) with preprocess of O(n) which isnt hard to think of
Good luck
what is X and Y?
some variables you choose?
Y should be a prime (random or at least unrelated to the test data). Y should be greater than n^2, where n is the number of strings you are planning to hash.
X should be a integer between your alphabet size and Y-1. Code is easier to write if X*Y conveniently fits into your integer data type.
Read this code. it can be helpful.
Tank a lot
no problem ;)
http://threads-iiith.quora.com/String-Hashing-for-competitive-programming Have a look at this.