Läxa vecka 15
===
Välj antingen läxa 1 eller läxa 2:
Läxa 1:
Lös:
- https://open.kattis.com/problems/stringmatching
- https://open.kattis.com/problems/hashing
Lös en av:
- https://open.kattis.com/problems/radiotransmission
- https://open.kattis.com/problems/powerstrings
- https://open.kattis.com/problems/clockpictures
Lös en av:
- https://open.kattis.com/problems/chasingsubs
- https://open.kattis.com/problems/animal
Läxa 2:
Gör ett bibliotek i valfritt språk som löser generalliserade strängproblem.
Detta biblioteket kan ni såklart sedan använda för tävlingsprogrammering
Man ska enkelt kunna importera biblioteket för att.
Förslagsvis så skapar ni en kattisfil som tar in indata, och som sedan använder sig av erat bibliotek
- https://kth.kattis.com/problems/stringmatching
- https://kth.kattis.com/problems/stringmultimatching
- https://kth.kattis.com/problems/suffixsorting
Kul (och svåra) bonusproblem om hashning, för den som känner för det (ersätter godtyckligt problem från ovan):
- http://codeforces.com/problemset/problem/464/E (möjlig hint: persistenta segmentträd [[1]](http://www.geeksforgeeks.org/persistent-segment-tree-set-1-introduction/))
- http://www.spoj.com/problems/TREEISO/ (möjlig hint: centroider [[1]](https://en.wikipedia.org/wiki/Centered_tree) [[2]](https://threads-iiith.quora.com/Centroid-Decomposition-of-a-Tree))
Läsning/referens:
- https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm
- https://en.wikipedia.org/wiki/Rolling_hash
- https://en.wikipedia.org/wiki/Trie
- https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm
- https://en.wikipedia.org/wiki/Suffix_array
- https://github.com/kth-competitive-programming/kactl/tree/master/content/strings
- http://www.csc.kth.se/~jsannemo/slask/main.pdf kapitel 16
Bonusläsning:
- Hur man konstruerar en suffix-array i $\mathcal{O}(n)$: https://zork.net/~st/jottings/sais.html#concepts-in-sa-is