Reminder: in case of any technical issues, you can use the lightweight website m1.codeforces.com, m2.codeforces.com, m3.codeforces.com. ×

### hsk's blog

By hsk, history, 4 years ago, ,

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

## 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

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

- Codeforces — Important Graph Algorithms by PrinceOfPersia

- Codechef — Tutorial on Graph Theory — part 1

• Questions on

- 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

## 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

- A2oj

## Segment Trees

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

• Questions on

- 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

- A2oj

• +30

 » 4 years ago, # |   +6 Auto comment: topic has been updated by hsk (previous revision, new revision, compare).
 » 4 years ago, # |   +6 Auto comment: topic has been updated by hsk (previous revision, new revision, compare).
 » 4 years ago, # |   +6 Auto comment: topic has been updated by hsk (previous revision, new revision, compare).
 » 4 years ago, # |   +5 Auto comment: topic has been updated by hsk (previous revision, new revision, compare).
 » 4 years ago, # |   0 Awesome. It helps a lot. Thanks.
 » 3 years ago, # |   0 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
•  » » 3 years ago, # ^ |   0 The difficulty increases with increase in level. So you should start with level 1 and go for 2,3.. and so on.
 » 3 years ago, # |   0 thanks a lot
 » 3 years ago, # |   0 Ternary search blog site does not work anymore.
•  » » 21 month(s) ago, # ^ |   0 flow doesn't work anymore either
 » 6 days ago, # |   0 How do I configure vim for competitive coding in windows?