Tips from from an expert competitive programmer (Anudeep Nekkanti) for someone beginning competitive coding:
If I aim to start programming now, I would do it this way:
- Solve 200 most solved problems on SPOJ, Problem by problem. In 2 months. (This will teach all standard problems, algorithms and implementation skills)
- Solve problems from CodeChef and CodeForces for 2 months. (This will teach variations, we can read others solutions and learn better ways. Skip easy problems)
- Solve problems from TopCoder for 2 months. (This will teach Dynamic Programming. Div 1 500p)
- Check past ACM ICPC Regional's Problems (Great quality problems)
If I am to learn a new Algorithm now, I would do it this way
- Read it from at least 3-4 different sources.
- Understand correctness proof and run-time analysis. (This is very very important, you will know it only when you deal with non standard and hard problems)
- Question yourself on every step for correctness. Try to tweak the implementation.
- Check other implementations
- https://www.hackerearth.com/practice/codemonk/
- https://www.quora.com/How-do-I-become-a-competitive-programmer
- https://discuss.codechef.com/questions/37684/learn-competitive-programming
- https://www.hackerearth.com/notes/getting-started-with-the-sport-of-programming/
- http://web.stanford.edu/class/cs97si/