Rare
0/7
String Hashing
Authors: Benjamin Qi, Andrew Wang
Prerequisites
Quickly test equality of substrings with a small probability of failure.
Focus Problem – read through this problem before continuing!
Tutorial
| Resources | |||
|---|---|---|---|
| CPH | good intro | ||
| cp-algo | code | ||
| PAPS | many applications | ||
Implementation - Single Base
As mentioned in the articles above, there is no need to calculate modular inverses.
C++
1const ll M = 1e9 + 9, P = 9973; // Change M and P if you want to23ll pw[100001]; // Stores the powers of P modulo M45int n;6string s;7ll hsh[100001];89void calc_hashes() {10 hsh[0] = 1;
Java
1public static final long M = (long)1e9 + 9, P = 9973; // Change M and P if you want to23public static long pw[] = new long[100001]; // Stores the powers of P modulo M45public static int n;6public static String s;7public static long hsh[] = new long[100001];89public static void calc_hashes() {10 hsh[0] = 1;
Implementation - Multiple Bases
| Resources | |||
|---|---|---|---|
| CF | regarding CF educational rounds in particular | ||
| Benq | |||
It's generally a good idea to use two randomized bases rather than just one to decrease the probability that two random strings hash to the same value.
Solution - Searching For Strings
This section is not complete.
Feel free to file a request to complete this using the "Contact Us" button.
ex code for single, multiple hashes
Problems
| Status | Source | Problem Name | Difficulty | Tags | Solution | URL |
|---|---|---|---|---|---|---|
| CSA | Easy | Show TagsGreedy, Hashing | Check CSA | |||
| CF | Easy | Show TagsDP, Hashing | Check CF | |||
| Gold | Normal | Show TagsHashing | ||||
| Gold | Normal | Show TagsHashing, Simulation | ||||
| CF | Hard | Show TagsDP, Hashing | Check CF | |||
| COI | Hard | Show TagsHashing, Binsearch | External Sol |
Module Progress:
Join the USACO Forum!
Stuck on a problem, or don't understand a module? Join the USACO Forum and get help from other competitive programmers!