views:

592

answers:

7

Hi,

I've been practicing doing topcoder and acm contests(local ones and practice sets). But I'm hitting a brick wall in terms of performance. I can solve the first topcoder problem, but almost never the second one. I need some solid theory and memory of common strategies/algos/structures involved in these types of competitions. Just trying to solve the problems is not enough if they are too hard for me.

What can I read to improve this skill? Note*: I could just pickup an "algorithms" book, but that's just the same as what they teach me in university. I'm looking for something that covers material that doesn't normally fall into programmer's formal education.

I'm looking for something more tailored or suitable for algorithm competitions like topcoder and such.

+2  A: 

I recommend Introduction to Algorithms, 2nd edition. Its a great book to have, even if used just as a reference.

yx
+2  A: 

Maybe a bit moldy, but I highly recommend the book "Hackers delight".

merkuro
If we're talking about the same book (Henry (Hank) Warren, 2003) then the book's website, http://www.hackersdelight.org/ , is worth a visit for extracts and additional material.
mas
@mas Exactly the book I was talking about. Thanks for the link!
merkuro
+5  A: 

Programming Challenges - The Programming Contest Training Manual by Skiena and Revilla

mbeckish
A: 

I haven't actually read this book series my self, but they're supposed to cover a lot of ground, algorithm-wise: Donald Knuth: Art of Computer Programming.

JHollanti
A: 

Read code.

Find a site that allows you to view other people's solutions. Find someone who's a little better and study his programmes. Then, find somebody else and repeat.

Check the other comments for examples of sites.

Cheers.

scvalex
A: 

Google Code Jam

Do all the questions, it should cover a variety of subjects.

What you probably need is to actually go through the logic of each problems. Find what are the difficulties, what part you can easily solve, and where you are blocked. When you do not have any way to go further, stop and look at the problem. Can it be simplified? It's more than likely possible.

tomzx