Any cool algorithms/data-structures to re-invent?

Revision en2, by nns2009, 2025-02-12 15:19:54

(since I don’t have any following, this post will probably only get a few views, so in case you find it months/years later — yes, still relevant)

I am looking for some cool algorithms or data-structures, which are ingenious, clever and interesting, but also not prohibitively complicated, so it’s possible to re-discover them while solving some specific task.

My current knowledge for context

Re-invented before:

(stuff I came up with before I ever read or been taught about it)

  • Polynomial string hashes
  • Convex-Hull
  • Persistent data structures like trees (by familiarity with functional programming, immutability and such)
  • Graph min-span tree

Know-well:

  • Various graph algorithms
  • Various trees
  • RMQ
  • Prefix function, Aho-Corasick
  • Dynamic programming
  • DSU
  • Parsing by recursion

Remember in general details:

  • Suffix array

Coded previously, but never put effort to understand deeply and forgot:

  • Graph min/max flow
  • Suffix automaton
  • Some limited RMQ-like structure, which can only do a subset of operations, but has a lower constant and lower memory usage (don’t remember the name)

This is not an exhaustive set of what I know, but hopefully it gives you a general idea to suggest stuff, which I likely don’t know and will find interesting.

Ideally looking for:

  • CodeForces problem links
  • a name of the algorithm/data-structure needed to solve it (which I’ll try not to use/Google before solving myself)
  • Estimated difficulty to re-invent the algorithm and solve the corresponding problem(s)
Tags algorithms, data structures, invent, interesting

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
ru2 Russian nns2009 2025-02-12 15:20:34 0 (опубликовано)
en2 English nns2009 2025-02-12 15:19:54 0 (published)
ru1 Russian nns2009 2025-02-12 15:17:21 1859 Первая редакция перевода на Русский (сохранено в черновиках)
en1 English nns2009 2025-02-12 14:50:27 1695 Initial revision (saved to drafts)