Competetive Programming Guide

Month 1

Week 1

Dynamic Programming

Contests


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

Problems: Biconnected Components

Problems: Shortest Path

Problems: Minimum Spanning Tree

Contests


Week 3

String Algorithms

  1. Reading material

  1. Problems on HackerEarth

Problem Link Finished
★★☆ Find the substrings
★★☆ The Cheapest Palindrome
★★☆ Largest Lexicographical Rotation II
★★☆ Monk and Monster
★★★ Prefix Number
★★★ Last Forever
  1. Problems on HackerRank

Problem Link Finished
★☆☆ Sherlock and the Valid String
★☆☆ Highest Value Palindrome
★★☆ Sherlock and Anagrams
★★☆ Common Child
★★★ Build a Palindrome
  1. Problems on Codeforces

Problem Link Finished
★☆☆ Petya and Exam
★★☆ Password
★★★ Prefixes and Suffixes
  1. Problems on Codechef

  1. Problems on SPOJ


Week 4: Practice Contest


Week 5

Data Structures

Sparse Table

  1. Reading Material

  1. Problems

Disjoint Set Union

  1. Reading Material

  1. Problems


Week 6

Square Root Decomposition

  1. Reading Material

  1. Problems


Week 7

Segment Tree

  1. Reading Material

  1. Problems


Week 8

Fenwick Tree

  1. Reading Material

  1. 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.