So, I suggest you just read everything you can, getting the gist of things so if you encounter something similar you know where to look.
I also suggest looking for little tricks you can apply again and again. For example, some of the data structures in that course use a trick where you break the structure into a top part, using one algorithm, and a bunch of leaf parts, each of size maybe O(log n), that are handled using another algorithm. Often this combination does better than either algorithm by itself.
1. Where can I find that algorithm you are talking about?
2. The algorithm which you stated seems a bit complex from the algos taught in the undergrad level, so what are the pre-requisites for understanding it that I must be aware of?
3. What books or papers you would suggest for reading?
4. How the hell you remember something you read decades ago :)?
It turns out this can be done (to sufficient accuracy) in nearly linear time using something called the fast multipole method.
http://www.umiacs.umd.edu/labs/cvl/pirl/vikas/publications/F...
I wouldn't consider the "O(log n) chunks" trick all that complex, btw, although Tarjan did have to point it out to me when I should have used it.
Wow, you worked with Tarjan. How cool!!!.