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:
- 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
Trees & Graphs
| ☆ | 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 |
- 🎥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
- UVa 00315: Network (finding articulation points)
- UVa 00796: Critical Links (finding bridges)
- CF 193A: Cutting Figure
String Algorithms
- Basics of String manipulation
- KMP algorithm
- Z algorithm
- Z algorithm II
- Manachar's algorithm
- Manacher's algorithm II
- Rabin-Karp and KMP TopCoder
| ☆ | Problem Link | Finished |
|---|---|---|
| ★★☆ | Find the substrings | |
| ★★☆ | The Cheapest Palindrome | |
| ★★☆ | Largest Lexicographical Rotation II | |
| ★★☆ | Monk and Monster | |
| ★★★ | Prefix Number | |
| ★★★ | Last Forever |
| ☆ | Problem Link | Finished |
|---|---|---|
| ★☆☆ | Sherlock and the Valid String | |
| ★☆☆ | Highest Value Palindrome | |
| ★★☆ | Sherlock and Anagrams | |
| ★★☆ | Common Child | |
| ★★★ | Build a Palindrome |
| ☆ | Problem Link | Finished |
|---|---|---|
| ★☆☆ | Petya and Exam | |
| ★★☆ | Password | |
| ★★★ | Prefixes and Suffixes |
Data Structures
Square Root Decomposition
- 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
Segment Tree
- Tutorial
- [ ]
- D. Distinct Characters Queries
- A. Knight Tournament
- F. Ant colony
- E. Drazil and Park
- C. DZY Loves Fibonacci Numbers
Fenwick Tree
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.