So I made this listing for topic wise coding resources. It is open sourced here Thought of sharing it here too!

# Awesome Competitive Coding

A Curated list of Topic wise Theory and Questions to Get You Started On Competitive Coding.

*Inspired by the awesome list thing. You might also like to read complete awesome-list.*

### Contributing

Kindly Go Through Contribution Guidelines First.

## Topics

- Binary and Ternary Search
- Dynamic Programming
- Flow
- Game Theory
- Graphs
- Greedy
- Maths
- Matrix Exponentiation
- Miscellaneous
- Prefix and Suffix Trees
- Segment Trees
- Trees

## Binary and Ternary Search

--- *Binary Search : The process of exploiting the property of an array of being sorted to arrive at answers of questions in non linear time.*

*Ternary Search : The process of exploiting the property of a function having double diffrential of a constant sign to arrive to results in non linear time.*

- Theory

- Hackerearth — Power of Binary search by Aman Goel (Easy).

- Topcoder — Binary Search by lovro (Hard).

- Ternary Search — Blog Post on Ternary Search.

- Questions on

- A2oj

- Codechef

## Dynamic Programming

--- *Used to solve questions which can be broken down into smaller sub problems.It involves the technique of saving the result of a problem for future reference.*

- Theory

- Topcoder — Dynamic Programming from Novice to Advanced.

- Codechef — Tutorial on Dynamic Programming.

- Questions on

- spoj

- A2oj

## Flow

- Theory

- Questions

- spoj

- A2oj

## Game Theory

--- *Used to solve problems involving mathematical modelling of conflict and cooperation among rational players.*

Theory

- Book — Composite Mathematical Games.

- Book — Game Theory By Thomas S. Ferguson.

- Wikipedia — Sprague Grundy Theorem.

- Topcoder — Introduction to Algorithmic Games.

Questions on

## Graphs

--- *A graph consists of nodes and the interconnection between them.The problems involve finding shortest distance, connectivity and flow.*

- Theory

- Topcoder

- Identifying a graph on Topcoder

- Codeforces — Important Graph Algorithms by PrinceOfPersia

- Codechef — Tutorial on Graph Theory — part 1

- Questions on

- Codechef

- A2oj

## Greedy

--- *Greedy problems involve solving a problem statement considering the most greedy, i.e. most optimal solution at the given time without taking into consideration the future effects of it.*

- Theory

- Topcoder — Greedy is Good.

- Stackoverflow. — Tutorial on how to spot a greedy algorithm.

- Hackerearth — Tutorial on greedy algorithms by Akash Sharma.

- Questions on

- A2oj

## Maths

--- *Problem related to mathematics are quite common in the domain of competitive programming.It involved topics like geometry, algebra, discrete mathematics and probability.*

- Theory

- Stanford — Stanford's Guide on Introduction To Competitive Programming.

- Aduni — Course Guide to Discrete Mathematics.

- Topcoder — Understanding Probability.

- Questions on

- A2oj

- Codechef — Basic

- Codechef — Advanced

## Matrix Exponentiation

--- *Used to solve problems which involve finding a solution to a given series by using exponentiation property on multiplication of matrices.The complexity is thus reduced to logrithmic from linear.*

- Theory

- zobayer — Introduction to Matrix exponentiations

- Quora — Solving Dynamic Programming with Matrix Exponentiation.

- Questions on

- A2oj

## Miscellaneous

- Mo's Algorithm - Blog Post By Anudeep Nekkanti

Persistant Segment Trees - Blog Post By Anudeep Nekkanti - MKTHNUM on Spoj

Mobius Function - Dance With Mobius Function by Surya Kiran

Treaps - Codeforces

Bit Manipulation

- Hackerearth — Tutorial on Bit Manipulation by Prateek Garg.

- Hackerrank — Questions On Hackerrank on bit manipulation.

Other Resources - Data Structures — A guide to high level data structures by PrinceOfPersia

## Prefix and Suffix Trees

--- *Tries are some kind of rooted trees in which each edge has a character on it.*

- Theory

- Wikipedia — Introduction to Tries.

- Marknelson — Tutorial on prefix and suffix trees by Sartaj Sahni

- Marknelson — Suffix Trees Explained.

- Questions on

- Codechef

- A2oj

## Segment Trees

--- *Segment tree is a tree for which each node represents an interval.*

Theory

Hackerearth — Segment trees for Beginners by Ayush Agrawal.

Codeforces — Everything about Segment trees by PrinceOfPersia

- Questions on

- Codechef

- A2oj

## Trees

--- *A tree is a data structure made up of nodes or vertices and edges without having any cycle.*

- Theory

- Hackerearth — Baisc introduction to trees and terminologies related to it by [Anuj Garg](https://www.hackerearth.com/users/

- Questions on

- Codechef

- A2oj

Auto comment: topic has been updated by hsk (previous revision, new revision, compare).Auto comment: topic has been updated by hsk (previous revision, new revision, compare).Auto comment: topic has been updated by hsk (previous revision, new revision, compare).Auto comment: topic has been updated by hsk (previous revision, new revision, compare).Awesome. It helps a lot. Thanks.

in A2oj if we have just started solving problems for example take graph i have learnt basic algorithms so now i want to practice and apply them so should i start solving from difficulty level 10 or difficulty level 1 which is easier level 1 or 10

The difficulty increases with increase in level. So you should start with level 1 and go for 2,3.. and so on.

thanks a lot

Ternary search blog site does not work anymore.

flowdoesn't work anymore eitherHow do I configure vim for competitive coding in windows?