Você está na página 1de 2

Yellow-not done

I hope that most you are spending your holidays finishing up basic C++. 7 days is a good
time for that provided you had done some work in the semester already.
After this, I recommend you to start reading algorithms. You can find courses on Coursera for
A great course is Algorithms (Part I & II) by Robert Sedgewick (Princeton). Part II is going on
right now. Download the videos as and when they release and watch them well.
There is no one great book to read algorithms. To understand something, you may need to
read one or two books and refer to tutorials on the web. You can also find sample code on
the internet to make your work easier.
However, Introduction to Algorithms by Cormen is a great book although some of you may
find it too intense in the beginning. In general, internet is a great place to read about
algorithms. Especiallywww.geeksforgeeks.org . If you have working knowledge of each
article on that website along with some other fundamental CS topics like Operating Systems
and Databases, then you have great chances to make it to some great companies and
amazing startups as well.
Read algorithms for the next 6 months.
Try to follow the following sequence.

Stacks, Queues, Linked Lists-circular and little remaining .

Trees ( Binary Search Trees, Red Black Binary Search Trees)
Graphs ( Shortest Paths, MSTs )

If you have gone through basic algorithms, I highly recommend you to study the following
algorithms. Within no time, you will see yourself performing much better on CodeChef,
TopCoder, Code Forces etc.
The previous four topics are large and will require some time from your side. The next 37
topics that you see are rather short, but carry lots of useful knowledge. So, don't worry
about the quantity.
(List is copied from CodeChef)
Also, if you wanted to get into Facebook/Google, its high time you start taking things

Segment tree (with lazy propagation)

Interval Tree
Binary Indexed Tree
Fast Modulo Multiplication (Exponential Squaring)
Heuristic Algorithms
KMP string searching

7. Manacher's Algorithm
8. Union Find/Disjoint Set
9. Trie
10. Prime Miller Rabin
11. Matrix Recurrence + Fast Modulo Multiplication for counting
12. Stable Marriage Problem
13. Extended Euclid's algorithm
14. Ternary Search
15. Fast Fourier Transform for fast polynomial multiplication
16. Djikstra's algorithm, Bellman-ford algorithm, Floyd-Warshall Algorithm
17. Prim's Algorithm, Kruskal's Algorithm
18. RMQ, LCA
19. Flow related algorithms, assignment problem, Hungarian algorithm
20. Bipartite matching algorithms
21. Heavy-light decomposition
22. Sweep line algorithm
23. Z algorithm
24. Convex Hull
25. Suffix Arrays
26. LCP
27. Suffix Tree
28. Gaussian Elimination
29. Numerical Integration/Differentiation
30. Line Clipping
31. Advanced Maths Ad-Hoc problems
32. AhoCorasick string matching algorithm;
33. Calculate nCr % M Lucas's Theorem
34. Heavy Light decomposition in trees
35. Inverse Modulo operations
36. Pollard Rho Integer Factorization
37. Catalan Numbers
For revising basic algorithms, read Data Structures by Narasimha Karumanchi.
Read tutorials from http://www.geeksforgeeks.org/
Try to solve at least one or two questions from now on, on the CodeChef Monthly contests.
Dec Challenge is going on now. The more you read about algorithms the more you can solve.