Competetive Programming Guide
Month 1
Week 1
Dynamic Programming
- Read Dynamic Programming Notes Hackerearth
- Read DP Tutorial involving grids
- Read TopCoder Tutorial on DP
- Solve the following classical problems:
- Solve the following MISC problems:
Contests
- Educational DP contest on AtCoder
- DSA Learning Series: Week 7 - DP By CodeChef
- Marathon DP - 01
- V Planet DP - 2
- V Planet DP - 3
- V Planet DP Week 5
Week 2
Trees & Graphs
Trees
☆ | Problem Link | Finished |
---|---|---|
★☆☆ | Diameter of a Binary Tree | |
★☆☆ | Path Sum | |
★★☆ | K-th smallest element in a BST | |
★★☆ | Find duplicate subtrees | |
★★☆ | Lowest Common Ancestor of a binary tree | |
★★★ | Sum of distances in tree |
Graphs
BFS and DFS
Strongly Connected Components
Biconnected Components, Shortest Path and MST
Reading Material
- 🎥Finding Bridges in Graphs
- 🎥Articulation Points
- 🎥Dijkstra's Shortest path
- Bellman Ford algorithm
- 🎥Floyd Warshall's algorithm
- 🎥Kruska's Minimum Spanning Tree
- 🎥Prim's MST Algorithm
Problems: Biconnected Components
- UVa 00315: Network (finding articulation points)
- UVa 00796: Critical Links (finding bridges)
- CF 193A: Cutting Figure
Problems: Shortest Path
Problems: Minimum Spanning Tree
Contests
Week 3
String Algorithms
-
Reading material
- Basics of String manipulation
- KMP algorithm
- Z algorithm
- Z algorithm II
- Manachar's algorithm
- Manacher's algorithm II
- Rabin-Karp and KMP TopCoder
-
Problems on HackerEarth
☆ | Problem Link | Finished |
---|---|---|
★★☆ | Find the substrings | |
★★☆ | The Cheapest Palindrome | |
★★☆ | Largest Lexicographical Rotation II | |
★★☆ | Monk and Monster | |
★★★ | Prefix Number | |
★★★ | Last Forever |
-
Problems on HackerRank
☆ | Problem Link | Finished |
---|---|---|
★☆☆ | Sherlock and the Valid String | |
★☆☆ | Highest Value Palindrome | |
★★☆ | Sherlock and Anagrams | |
★★☆ | Common Child | |
★★★ | Build a Palindrome |
-
Problems on Codeforces
☆ | Problem Link | Finished |
---|---|---|
★☆☆ | Petya and Exam | |
★★☆ | Password | |
★★★ | Prefixes and Suffixes |
-
Problems on Codechef
-
Problems on SPOJ
Week 4: Practice Contest
Week 5
Data Structures
Sparse Table
-
Reading Material
-
Problems
Disjoint Set Union
-
Reading Material
-
Problems
Week 6
Square Root Decomposition
-
Reading Material
- Tutorial 1: Base Concept + Mo's algorithm
- Tutorial 2
- Tutorial 3 : Read the comments
- Tutorial 4 : Video Lecture, find slides in video description
- Tutorial 5 : Exhaustive PDF
- Tutorial 6 : Mo's Algorithm
-
Problems
Week 7
Segment Tree
-
Reading Material
- Tutorial
- [ ]
-
Problems
- D. Distinct Characters Queries
- A. Knight Tournament
- F. Ant colony
- E. Drazil and Park
- C. DZY Loves Fibonacci Numbers
Week 8
Fenwick Tree
-
Reading Material
-
Problems
Why use this list?
Since getting better at competitive programming takes a lot of effort, you need to keep practicing a lot of problems. This list will keep you focussed and you will have a target with you that you need to finish atleast these many problems before moving on. It can help you organize your practice.