Get_Better_CP_in_2_Months
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:
- Try to solve as much tasks as possible in this Educational DP contest on AtCoder
Week 2
String Algorithms
-
Reading material
- Basics of String manipulation
- KMP algorithm
- Z algorithm
- Manachar's algorithm
- 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 3
Week 3
- Solve the remaining problems from Week 1 and Week 2.
- Take part in CodeChef June Challenge.
This list will be updated frequently.
Week 4
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 5
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
Week 6: Graphs: 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
Week 7: Practice Contest
- Solve as many problems as possible out of a total of 24, in the ZCO Practice Contest.
Why use this list?
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.
How to use this list?
How to use this list?
The Github markdown's task list feature is used to check progress.
Create a new branch so that you can check items like this, just put a x in the brackets: [x]
- One time steps:
-
Fork this repository.
-
Clone the forked repository.
git clone https://github.com/your_user_name/Get_Better_at_CP_in_2_Months/
-
Create a new branch for tracking your progress. Let's name this your_user_name
git checkout -b your_user_name
-
Add remote
git remote add your_user_name https://github.com/your_user_name/Get_Better_at_CP_in_2_Months/
-
Marking tasks as completed and pushing to your branch:
git add . git commit -m "Completed tasks x and y" git rebase your_user_name/master git push --force
-
Keeping your fork's list updated with the changes made here:
git remote add upstream https://github.com/sahilbansal17/Get_Better_at_CP_in_2_Months.git git checkout master git pull upstream master git push your_user_name master
Refer to this for understanding more about Fork and PR workflow.