Topic wise Coding Resources
Difference between en1 and en2, changed 34 character(s)
So I made this listing for topic wise coding resources.↵
It is open sourced [here](https://github.com/hkirat/awesome-competitive-coding)↵
Thought of sharing it here too!↵

# Awesome Competitive Coding [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)↵

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

*Inspired by the [awesome](https://github.com/sindresorhus/awesome) list thing. You might also like to read complete [awesome-list](https://github.com/sindresorhus/awesome).*↵

### Contributing↵
Kindly Go Through [Contribution Guidelines](https://github.com/hkirat/awesome-competitive-coding/blob/master/CONTRIBUTING.md) First.↵

Topics↵
---↵
 - [Binary and Ternary Search](#binary-and-ternary-search)↵
 - [Dynamic Programming](#dynamic-programming)↵
 - [Flow](#flow)↵
 - [Game Theory](#game-theory)↵
 - [Graphs](#graphs)↵
 - [Greedy](#greedy)↵
 - [Maths](#maths)↵
 - [Matrix Exponentiation](#matrix-exponentiation)↵
 - [Miscellaneous](#miscellaneous)↵
 - [Prefix and Suffix Trees](#prefix-and-suffix-trees)↵
 - [Segment Trees](#segment-trees)↵
 - [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](https://www.hackerearth.com/notes/power-of-binary-search/) — Power of Binary search by [Aman Goel](https://www.hackerearth.com/users/amangoel.vsec/) (Easy).↵
  - [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) — Binary Search by [lovro](https://www.topcoder.com/member-profile/lovro/) (Hard).↵
  - [Ternary Search](http://rendon.x10.mx/ternary-search/) — Blog Post on Ternary Search.↵

 - Questions on↵

  - [Codeforces](http://codeforces.com/problemset/tags/binary%20search)↵
  - [A2oj](http://a2oj.com/Category.jsp?ID=40)↵
  - [Codechef](https://discuss.codechef.com/tags/binarysearch/)↵

## 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](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) — Dynamic Programming from Novice to Advanced.↵
  - [Codechef](https://www.codechef.com/wiki/tutorial-dynamic-programming) — Tutorial on Dynamic Programming.↵

 - Questions on↵

  - [Hackerrank](https://www.hackerrank.com/domains/algorithms/dynamic-programming)↵
  - [spoj](http://problemclassifier.appspot.com/?keywords=dp)↵
  - [More Problems on SPOJ](http://apps.topcoder.com/forums/;jsessionid=C684F032169B7439C8012AAB6BA2018C?module=Thread&threadID=674592)↵
  - [A2oj](http://a2oj.com/Category.jsp?ID=33)↵
  - [Codeforces](http://codeforces.com/problemset/tags/dp)↵

## Flow↵
---↵

 - Theory↵

  - [Topcoder — Max Flow Part 1](https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-section-1/)↵
  - [Topcoder — Max Flow Part 2](https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-section-2/)↵

 - Questions↵

  - [spoj](http://problemclassifier.appspot.com/?keywords=flow)↵
  - [A2oj](http://a2oj.com/Category.jsp?ID=12)↵

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

 - Theory↵
- [Stanford](http://web.stanford.edu/class/cs97si/05-combinatorial-games.pdf) — PDF on Combinatorial Games.↵
- [Wikipedia](https://en.wikipedia.org/wiki/Nim) — Introduction to Nim Games.↵
- [Book](http://www.cs.ox.ac.uk/files/2735/Composite_games.pdf) — Composite Mathematical Games.↵
- [Book](http://www.math.ucla.edu/~tom/Game_Theory/comb.pdf) — Game Theory By Thomas S. Ferguson.↵
- [Wikipedia](https://en.wikipedia.org/wiki/Sprague%E2%80%93Grundy_theorem) — Sprague Grundy Theorem.↵
- [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/algorithm-games/) — Introduction to Algorithmic Games.↵

 - Questions on ↵
- [A2oj](http://a2oj.com/Category.jsp?ID=91)↵

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

 - Theory↵

  - [Topcoder](https://topcoder.com)↵
  - [Identifying a graph on Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-graphs-and-their-data-structures-section-1/)↵
  - [Searching in a Graph](https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-graphs-and-their-data-structures-section-2/)↵
  - [Path Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-graphs-and-their-data-structures-section-3/)↵
  - [Codeforces](http://codeforces.com/blog/entry/16221) — Important Graph Algorithms by [PrinceOfPersia](http://codeforces.com/profile/PrinceOfPersia)↵
  - [Codechef](https://www.codechef.com/wiki/tutorial-graph-theory-part-1) — Tutorial on Graph Theory — part 1↵

 - Questions on↵

  - [Codeforces](http://codeforces.com/problemset/tags/graphs)↵
  - [Codechef](https://discuss.codechef.com/tags/graph/)↵
  - [A2oj](http://a2oj.com/Category.jsp?ID=13)↵

## 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](https://www.topcoder.com/community/data-science/data-science-tutorials/greedy-is-good/) — Greedy is Good.↵
   - [Stackoverflow.](http://stackoverflow.com/questions/7887487/how-to-spot-a-greedy-algorithm) — Tutorial on how to spot a greedy algorithm.↵
   - [Hackerearth](https://www.hackerearth.com/notes/greedy-algorithm/) — Tutorial on greedy algorithms by [Akash Sharma](https://www.hackerearth.com/users/r3gz3n/).↵

 - Questions on↵

   - [Codeforces](http://codeforces.com/problemset/tags/greedy)↵
   - [A2oj](http://a2oj.com/Category.jsp?ID=56)↵

## 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](http://web.stanford.edu/class/cs97si/02-mathematics.pdf) — Stanford's Guide on Introduction To Competitive Programming.↵
  - [Aduni](http://www.aduni.org/courses/discrete/index.php?view=cw) — Course Guide to Discrete Mathematics.↵
  - [Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/understanding-probabilities/) — Understanding Probability.↵

 - Questions on ↵
 ↵
  - [A2oj](http://a2oj.com/Category.jsp?ID=86)↵
  - [Codechef](https://discuss.codechef.com/tags/simple-math/) — Basic↵
  - [Codechef](https://discuss.codechef.com/tags/maths/) — 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](http://zobayer.blogspot.in/2010/11/matrix-exponentiation.html) — Introduction to Matrix exponentiations↵
  - [Quora](https://threads-iiith.quora.com/Solving-Dynamic-Programming-with-Matrix-Exponentiation) — Solving Dynamic Programming with Matrix Exponentiation.↵

 - Questions on↵

  - [A2oj](http://a2oj.com/Category.jsp?ID=32)↵

## Miscellaneous↵
---↵

 - Mo's Algorithm↵
  - [Blog Post By Anudeep Nekkanti](http://blog.anudeep2011.com/mos-algorithm/)↵

  - [Hackerearth](https://www.hackerearth.com/notes/mos-algorithm/)↵

  - [DQUERY on Spoj](http://www.spoj.com/problems/DQUERY/en/)↵

  - [FREQUENT on Spoj](http://www.spoj.com/problems/FREQUENT/)↵

 - Persistant Segment Trees↵
  - [Blog Post By Anudeep Nekkanti](http://blog.anudeep2011.com/persistent-segment-trees-explained-with-spoj-problems/)↵
  - [MKTHNUM on Spoj](http://www.spoj.com/problems/MKTHNUM/en/)↵

 - Mobius Function↵
  - [Dance With Mobius Function by Surya Kiran](https://www.quora.com/profile/Surya-Kiran/Posts/A-Dance-with-Mobius-Function)↵

 - Treaps↵
  - [Codeforces](http://codeforces.com/blog/entry/11148)↵

  - [Wikipedia](https://en.wikipedia.org/wiki/Treap)↵

  - [TREAP on Spoj](http://www.spoj.com/problems/TREAP/)↵

 - Bit Manipulation↵
- [Hackerearth](https://www.hackerearth.com/notes/bit-manipulation/) — Tutorial on Bit Manipulation by [Prateek Garg](https://www.hackerearth.com/users/ptk23/).↵

- [Hackerrank](https://www.hackerrank.com/domains/algorithms/bit-manipulation) — Questions On Hackerrank on bit manipulation.↵

 - Other Resources↵
  - [Data Structures](http://codeforces.com/blog/entry/15729) — A guide to high level data structures by [PrinceOfPersia](http://codeforces.com/profile/PrinceOfPersia)↵

## Prefix and Suffix Trees↵
---↵
*Tries are some kind of rooted trees in which each edge has a character on it.*↵

 - Theory↵

  - [Wikipedia](https://en.wikipedia.org/wiki/Trie) — Introduction to Tries.↵

  - [Marknelson](http://marknelson.us/1996/08/01/suffix-trees/) — Tutorial on prefix and suffix trees by Sartaj Sahni↵

  - [Marknelson](http://marknelson.us/1996/08/01/suffix-trees/) — Suffix Trees Explained.↵

 - Questions on↵

  - [Codechef](https://www.codechef.com/problems/TWSTR/)↵

  - [Another problem on Codechef](https://www.codechef.com/SEPT13/problems/TMP01)↵

  - [A2oj](http://a2oj.com/Category.jsp?ID=49)↵

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

 - Theory↵

- [Hackerearth](https://www.hackerearth.com/notes/segment-trees-for-beginners/) — Segment trees for Beginners by [Ayush Agrawal](https://www.hackerearth.com/users/ayusha1107/).↵

  - [Codeforces](http://codeforces.com/blog/entry/15890) — Everything about Segment trees by [PrinceOfPersia](http://codeforces.com/profile/PrinceOfPersia)↵

- [Lazy Propogation](http://se7so.blogspot.in/2012/12/segment-trees-and-lazy-propagation.html) — Solving problems related to updation of segment tree in logrithmic time (also known as lazy propogation).↵

 - Questions on↵

  - [Codechef](https://discuss.codechef.com/tags/segment-tree/)↵

  - [A2oj](http://a2oj.com/Category.jsp?ID=25)↵

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

 - Theory↵

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

  - [Wikipedia](https://en.wikipedia.org/wiki/Tree_(data_structure)) — Tree (data structure)↵

 - Questions on↵

  - [Hackerrank](https://www.hackerrank.com/domains/data-structures/trees)↵

  - [Codechef](https://discuss.codechef.com/tags/trees/)↵

  - [A2oj](http://a2oj.com/Category.jsp?ID=89)↵

  - [Codeforces](http://codeforces.com/problemset/tags/trees)

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en5 English hsk 2016-01-31 23:29:18 2 Tiny change: 'Theory\n\n - [Ha' -
en4 English hsk 2016-01-31 23:26:23 536
en3 English hsk 2016-01-31 23:22:02 60
en2 English hsk 2016-01-31 23:19:45 34
en1 English hsk 2016-01-31 23:18:17 11473 Initial revision (published)