The following may be a bit oversimplified, but please bear with me.
I think that SPOJ problems can be separated into two groups
The first group are the problems in which solving them is mostly is a matter of programming knowhow, such as how to print the output in a specific fashion, which methods to call and so on. While being immensely useful for learning a language, I feel that they don't do much towards developing general problems solving skills.
The other group, which is the one I am actually most interested in, contains the problems which requires knowledge of algorithms in order to be able to solve them. Now, the wonderful thing about algorithms (or so I'm told) are that they are a general set of tools which can me used to solve a wide range problems.
So far I've been mostly solving problems of the first category, but I'm itching to break into the second category. The problem is that I lack the necessary knowledge about algorithms to do so. Which brings me to my main question: sources of good learning material. I am currently trying to follow this course:
http://academicearth.org/courses/introduction-to-algorithms
It's a wonderful course with a lot of useful information about algorithms, but it's all very general.
I guess what I'm looking for are examples of how, but more importantly when, to employ the different techniques (like the ones listed here: http://hbfs.wordpress.com/2008/12/23/the-10-classes-of-algorithms-every-programmer-must-know-about/) to solve various problems. Does anybody know of such a resource?
Actually looking for such a resource was how I found SPOJ 