awesome-competitive-programming
:gem: A curated list of awesome Competitive Programming, Algorithm and Data Structure resources
https://github.com/lnishan/awesome-competitive-programming
Last synced: 7 days ago
JSON representation
-
Other Awesome Resources
-
Awesome Lists
- fffaraz/awesome-cpp
- akullpp/awesome-java
- tayllan/awesome-algorithms
- enjalot/algovis
- rossant/awesome-math
- vhf/free-programming-books
- Hackr.io
- The Definitive C++ Book Guide and List - Stack Overflow
- What are the best books to learn Java? - Quora
- What is the best book for advanced Java programming? - Quora
-
Interview Questions
- InterviewBit - play designs which are designed to invoke one's interest in practicing. |
- LeetCode - organized website for software engineering interview preparation with best explanined solutions. |
- Awesome Interviews
-
Articles
- Getting started with the sport of competitive programming - HackerEarth
- Overview of Programming Contests
- The 'science' of training in competitive programming - Codeforces
- If you ask me how to improve your algorithm competition skill, I will give you the link of this blog. - Codeforces - Wen (dreamoon) |
- Complete reference to competitive programming - HackerEarth
- Complete reference to competitive programming - HackerEarth
- The 'science' of training in competitive programming - Codeforces
- If you ask me how to improve your algorithm competition skill, I will give you the link of this blog. - Codeforces - Wen (dreamoon) |
-
FAQs
- How do I start competitive programming? - Quora
- How can I become good at competitive programming? - Quora - 3 months? - Quora](https://www.quora.com/What-is-the-best-strategy-to-improve-my-skills-in-competitive-programming-in-2-3-months) ... [What is a good 6 month plan to start and progress through competitive programming? - Quora](https://www.quora.com/What-is-a-good-6-month-plan-to-start-and-progress-through-competitive-programming) |
- How is competitive programming different from real-life programming? - Quora
- What have you gained from competitive programming? - Quora
- How do I start competitive programming? - Quora
- How can I become good at competitive programming? - Quora - 3 months? - Quora](https://www.quora.com/What-is-the-best-strategy-to-improve-my-skills-in-competitive-programming-in-2-3-months) ... [What is a good 6 month plan to start and progress through competitive programming? - Quora](https://www.quora.com/What-is-a-good-6-month-plan-to-start-and-progress-through-competitive-programming) |
- What have you gained from competitive programming? - Quora
-
-
Open Courses
-
Open Courses for Algorithms and Data Structures
-
- Stanford CS 97SI: Introduction to Competitive Programming Contests
- Code Monk - by-step tutorial on the essential topics in competitive programming. |
- How to Win Coding Competitions: Secrets of Champions
- Codechef's Indian Programming Camp - from-indian-coding-camp/). Lectures given by top competitive programmers like Sergey Kulik, Kevin Charles Atienza and Anudeep Nekkanti. Primarily focused on exploring these concepts by applying them to actual competitive contest problems. |
- Reykjavik T-414-ÁFLV: A Competitive Programming Course
- NCTU DCP4631: Problem Solving and Programming Techniques
- Materials (English)
- Stanford CS 97SI: Introduction to Competitive Programming Contests
- Codechef's Indian Programming Camp - from-indian-coding-camp/). Lectures given by top competitive programmers like Sergey Kulik, Kevin Charles Atienza and Anudeep Nekkanti. Primarily focused on exploring these concepts by applying them to actual competitive contest problems. |
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
- NCTU DCP4631: Problem Solving and Programming Techniques
-
-
Tools
-
IDEs
- IntelliJ IDEA - Platform | IntelliJ IDEA is certainly one of the best IDEs for Java. It's used by most competitive programmers who use Java as their main language. Be sure to check out [CHelper](https://plugins.jetbrains.com/plugin/7091-chelper), a very handy plugin written for programming contests. |
- Vim - Platform | Vim is one of the most popular text editors among advanced programmers. It allows text-editing to be done very efficiently with solely keystrokes. Vim is also highly configurable, extensible and integrates with shells (command lines) really well. The only setback about Vim is that it has a high learning curve for beginners. |
- Visual Studio - hogging. ... [CodeLite](https://codelite.org/) is a newly rising IDE. Beware that the load-up and project-creation times can be extraordinary. |
- Eclipse - Platform | Eclipse is another good IDE for Java. It's an okay alternative to Intellij IDEA (A tad inferior to IDEA by today's standards). Sometimes contests only provide Eclipse for some reason, so this might be a good incentive to try and use Eclipse. |
- Sublime Text - Platform | Sublime Text is an extraordinary text editor. Packed with powerful and innovative features like Multiple Carets, Minimaps and Command Palletes, it attracts a strong and engaging community. Sublime Text is highly extensible, so be sure to have [Package Control](https://packagecontrol.io/) installed and explore perhaps one of the largest catalogue of plugins! |
- Emacs - Platform | Emacs is another popular text editor (or development environment to be more precise). The debate on "Vim vs. Emacs" is constantly brought up due to their popularity. Basically Emacs is more than just a text editor. It has plugins like file managers, web browsers, mail clients and news clients that allows users to performs these tasks directly inside Emacs. Emacs is "heavier" because of this, but it arguably has a relatively easier learning curve for beginners. |
- Far Manager - used editor in the RU/CIS competitive programming community. It's actually a file manager in its bare bones, but you can install [FarColorer](http://colorer.sourceforge.net/farplugin.html) - a syntax highlighter plugin to program on it. Properly configured, Far Manager allows you to navigate between files very efficiently while writing your codes. |
- Code::Blocks - Platform | Code::Blocks is the go-to IDE for C/C++. It's a full-fledged, versatile IDE with numerous great features. Code::Blocks is usually provided along with Vim in programming contests. |
- CLion - Platform | CLion, produced by JetBrains - the same company who made Intellij IDEA, is a powerful IDE for C++. Free educational licenses are available OR you can try out their [EAP (Early Access Program)](https://confluence.jetbrains.com/display/CLION/Early+Access+Program) which is still free as of Apr, 2018. You may want to turn off its code inspection feature as it will cause quite a bit of lag. |
-
Personal use
- Ideone.com - permanent pages for code sharing. Very useful especially when you're trying to get someone else to look into your code. |
- VisuAlgo
- CHelper - judge-tools](https://github.com/kmyk/online-judge-tools) (Stand alone CLI tool, It is actively maintained.) | Great tools that parse contests, inline library codes and provide testing frameworks. They save you from spending your precious time on switching windows and copy-pasting back and forth. |
- The On-Line Encyclopedia of Integer Sequences (OEIS)
- tohtml.com - You-See-Is-What-You-Get) editor! |
- Ineffable - line grader for local grading. |
- uDebug - specified inputs to problems on the UVa Online Judge. Some problems also provide additional test cases for debugging. |
- Codeforces Parser
- Ineffable - line grader for local grading. |
-
Contest Preparation
- Kattis - mail them for assistance). |
- polygon - Codeforces](http://codeforces.com/blog/entry/18426) |
- Graph Editor
- Virtual Judge (vjudge)
- BNU Online Judge
- Virtual Judge (vjudge)
- tcframe
-
-
Language Specifics
-
Miscellaneous
- Bit Twiddling Hacks
- Comparing Floating Point Numbers, 2012 Edition - Random ASCII
- Object-Oriented C Style Languages: C++, Objective-C, Java, C# - a side-by-side reference sheet - by-side reference sheet for common syntaxes. |
-
C/C++
- Power up C++ with the Standard Template Library - Topcoder: Part 1 - science/data-science-tutorials/power-up-c-with-the-standard-template-library-part-2/) | An introductory tutorial on basic C++ STLs. |
- Yet again on C++ input/output - Codeforces
- C++ Tricks - Codeforces - Quora](https://www.quora.com/Competitive-Programming/What-are-some-cool-C++-tricks-to-use-in-a-programming-contest) | Plentiful C++ tricks for competitive programming. Note that some should be used with care. |
- C++ STL: Policy based data structures - Codeforces: Part 1
- Yet again on C++ input/output - Codeforces
- C++ Tricks - Codeforces - Quora](https://www.quora.com/Competitive-Programming/What-are-some-cool-C++-tricks-to-use-in-a-programming-contest) | Plentiful C++ tricks for competitive programming. Note that some should be used with care. |
- C++ STL: Policy based data structures - Codeforces: Part 1
-
Java
- How to read input in Java — tutorial - Codeforces - read for those who intend to use Java for competitive programming |
- How to sort arrays in Java and avoid TLE - Codeforces
- BigNum arithmetic in Java — Let's outperform BigInteger! - Codeforces
- EZ Collections, EZ Life (new Java library for contests) - Codeforces
- How to read input in Java — tutorial - Codeforces - read for those who intend to use Java for competitive programming |
- How to sort arrays in Java and avoid TLE - Codeforces
- BigNum arithmetic in Java — Let's outperform BigInteger! - Codeforces
- EZ Collections, EZ Life (new Java library for contests) - Codeforces
-
-
Sites for Practice
-
Books for Mathematics
- CodeFights - tournaments. Good for beginners. |
- Project Euler
- CodeChef - profit educational initiative of Directi. It's a global competitive programming platform and has a large community of programmers that helps students and professionals test and improve their coding skills. Its objective is to provide a platform for practice, competition and improvement for both students and professional software developers. Apart from this, it aims to reach out to students while they are young and inculcate a culture of programming in India. |
- Hackerearth
- SPOJ - classifiers) section). SPOJ also allows advanced users to organize contests under their own rules. |
- Topcoder - discussed event. |
- Google Code Jam - esteemed programming competitions. The competition consists of unique programming challenges which must be solved in a fixed amount of time. Competitors may use any programming language and development environment to obtain their solutions. |
- Timus
- HDU
- Aizu Online Judge
- POJ - time issues may occur. |
- Caribbean Online Judge
- Russian Code Cup - 8 problems which must be solved in a fixed amount of time. |
- OmegaUp - based website for competitive programing training. It's also where Mexican Olympiad in Informatics (OMI : Olimpiada Mexicana de Informática) is hosted. |
- CS Academy
- POJ - time issues may occur. |
- Codeforces
-
Problem Classifiers
-
Contest Calendars
- Programming Contest Calendar - HackerRank
- clist.by
- Coding Calendar (Android App)
- CodeHorizon
- Competitive Programming Contests Calendar
- Coder's Calendar - calendar/bageaffklfkikjigoclfgengklfnidll), [Firefox Add-on](https://addons.mozilla.org/en-US/firefox/addon/coder-calendar/) | |
- CodeHorizon
-
-
Books
-
Open Courses for Algorithms and Data Structures
- Computational Geometry: Algorithms and Applications - written book which covers a broad range of computational geometry problems. |
- Competitive Programming - received book. ... The first edition is free for [download (pdf)](http://www.comp.nus.edu.sg/~stevenha/myteaching/competitive_programming/cp1.pdf). |
- Programming Challenges: The Programming Contest Training Manual
- Competitive Programmer's Handbook
- Algorithmic Thinking: A Problem-Based Introduction
- The Hitchhiker’s Guide to the Programming Contests
- プログラミングコンテストチャレンジブック (Japanese)
- 算法竞赛入门经典 (Chinese)
- 算法竞赛入门经典——训练指南 (Chinese)
- 算法艺术与信息学竞赛 (Chinese) - time classic. It's old but the contents in this book are still considered to be very difficult by today's standards. |
- The Hitchhiker’s Guide to the Programming Contests
- 算法竞赛入门经典 (Chinese)
- 算法艺术与信息学竞赛 (Chinese) - time classic. It's old but the contents in this book are still considered to be very difficult by today's standards. |
- プログラミングコンテストチャレンジブック (Japanese)
- Algorithmic Thinking: A Problem-Based Introduction
-
Books for Algorithms
- Algorithms and Data Structures in Action - chapter focusing on how to apply algorithms to real-world use cases that can be found in your daily work, or in competitive programming; it also presents a blend of classic, advanced, and new algorithms. |
- Algorithm Design - organized and written in a clear, understandable language. Each chapter is backed with practical examples and helpful exercises. The chapter on network flow is highly praised by lots. ... The lecture slides that accompany the textbook are available on its [official website](http://www.cs.princeton.edu/~wayne/kleinberg-tardos/). |
- The Algorithm Design Manual
- Algorithms
- Algorithms - published textbook licensed under CC by 4.0. This is a well written book from lecture notes of theoretical computer science courses at the University of Illinois. Covers the main paradigms of backtracking, dynamic programming, greedy, and particularly graphs in depth. |
- Algorithm Design - organized and written in a clear, understandable language. Each chapter is backed with practical examples and helpful exercises. The chapter on network flow is highly praised by lots. ... The lecture slides that accompany the textbook are available on its [official website](http://www.cs.princeton.edu/~wayne/kleinberg-tardos/). |
- Grokking Data Structures
- Introduction to Algorithms
- Algorithm Design - organized and written in a clear, understandable language. Each chapter is backed with practical examples and helpful exercises. The chapter on network flow is highly praised by lots. ... The lecture slides that accompany the textbook are available on its [official website](http://www.cs.princeton.edu/~wayne/kleinberg-tardos/). |
-
Books for Mathematics
- Discrete Mathematics and Its Applications
- Concrete Mathematics: A Foundation for Computer Science - related topics. |
- Linear Algebra and Its Applications
- Introduction to Probability - written introductory probabilities book. ... It's free for [download (pdf)](http://www.dartmouth.edu/~chance/teaching_aids/books_articles/probability_book/amsbook.mac.pdf) (released under GNU Free Documentation License). |
- How to Solve It: A New Aspect of Mathematical Method - time classic. In this book, the author provides a systematic way to solve problems creatively. |
- Intermediate Counting & Probability - exclusion, 1-1 correspondences, the Pigeonhole Principle, constructive expectation, Fibonacci and Catalan numbers, recursion, conditional probability, generating functions, graph theory, and much more.. |
- Intermediate Counting & Probability - exclusion, 1-1 correspondences, the Pigeonhole Principle, constructive expectation, Fibonacci and Catalan numbers, recursion, conditional probability, generating functions, graph theory, and much more.. |
- Linear Algebra and Its Applications
-
-
Tutorial Websites
- E-Maxx (Russian) - algorithms.com/) | A tutorial website widely used and referenced in the Russian-speaking competitive programming community. Most of the articles of the original site have been translated into English, Google Translate works okay for the remaining ones. |
- basecs - depth, illustrated tutorials on basic algorithms and data structures. |
- PEGWiki - depth wiki-like writeups on many topics. It's far better than those on Wikipedia in my opinion. |
- Notes - HackerEarth
- Competitive Programming - Commonlounge
- OLYMPIADS IN INFORMATICS
- algolist (Russian)
- 演算法筆記 (Algorithm Notes) (Chinese)
- 国家集训队论文 1999-2015 (Papers from Chinese IOI training camps) (Chinese)
- OI Wiki (Competitive Programming) (Chinese)
- Mini-Editorials - editorials for many problems, including UVA/SPOJ/IOI/Olympiad problems |
- PEGWiki - depth wiki-like writeups on many topics. It's far better than those on Wikipedia in my opinion. |
- algolist (Russian)
- Algorithms - GeeksforGeeks
-
Sites for Questions
-
Contest Calendars
-
Camps and Trainings
-
-
List of Lists
- All of the good tutorials found on codeforces - Codeforces
- Good Blog Post Resources about Algorithm and Data Structures - Codeforces
- Data Structures and Algorithms - CodeChef Discuss - have in your browser bookmark. |
- Good Blog Post Resources about Algorithm and Data Structures - Codeforces
- All of the good tutorials found on codeforces - Codeforces
-
Syllabuses
- How to prepare for ACM - ICPC? - GeeksforGeeks - through of the preparations for ACM-ICPC. |
- IOI Syllabus - ICPC. |
- Programming Camp Syllabus
- IOI Syllabus - ICPC. |
-
Community
-
Quora
- Competitive Programming - Quora - Programming/writers)).
- Bill Poucher - ICPC](https://icpc.baylor.edu). CS Professor at Baylor University. |
- Michal Forišek (misof) - rated competitive programmer. |
- Ahmed Aly (ahmed_aly) - Aly). [HackerRank](https://www.hackerrank.com) Lead Software Engineer. Former member of the [Google Code Jam](https://code.google.com/codejam/) team. |
- Thanh Trung Nguyen (I_love_Hoang_Yen) - Bi) | [Jonathan Paulson (jonathanpaulson)](https://www.quora.com/profile/Jonathan-Paulson) |
- Miguel Oliveira (mogers) - Suvorov) | [Michal Danilák (Mimino)](https://www.quora.com/profile/Michal-Danil%C3%A1k) |
- Bohdan Pryshchenko (I_love_Tanya_Romanova) - Novakovski) | [Nick Wu (xiaowuc1)](https://www.quora.com/profile/Nick-Wu-4) |
- Cosmin Negruseri - Kundu) | [Ashish Kedia (ashish1294)](https://www.quora.com/profile/Ashish-Kedia) |
- Johnny Ho (random.johnnyh) - Pan-1) | [Anudeep Nekkanti (anudeep2011)](https://www.quora.com/profile/Anudeep-Nekkanti) |
- Steven Hao (stevenkplus) - T-V) | |
-
Blogs
- Algorithms Weekly
- rng_58's blog
- Entropy always increases
- Psyho's blog
- Namespace Anudeep ;)
- vexorian's blog
- Fushar's blog
- WJMZBMR (Chinese)
- 小月的耍廢日誌 (Chinese)
- Morris' Blog (Chinese)
- xudyh (Chinese)
- Entropy always increases
- Fushar's blog
- WJMZBMR (Chinese)
- 小月的耍廢日誌 (Chinese)
- Morris' Blog (Chinese)
- xudyh (Chinese)
- WJMZBMR (Chinese)
-
Youtube and Livestreams
-
-
Implementations
-
Camps and Trainings
- CodeLibrary
- igor's code archive
- spaghetti-source/algorithm - quality implementations of many hard algorithms and data structures. |
- kth-competitive-programming/kactl - crafted team notebooks (contest libraries) I've ever seen. |
- foreverbell/acm-icpc-cheat-sheet
- jaehyunp/stanfordacm - quality. |
- ngthanhtrung23/ACM_Notebook_new - ICPC World Finals. The items in this notebook are pretty standard and well-organized. |
- bobogei81123/bcw_codebook - ICPC World Finals. This notebook contains robust implementations for advanced data structures and algorithms. |
- igor's code archive
-
Categories
Sub Categories
Youtube and Livestreams
26
Books for Mathematics
25
Blogs
18
Open Courses for Algorithms and Data Structures
18
Problem Classifiers
11
Awesome Lists
10
Camps and Trainings
10
Quora
10
Personal use
9
Books for Algorithms
9
IDEs
9
Articles
8
Java
8
Contest Calendars
8
Contest Preparation
7
FAQs
7
C/C++
7
Interview Questions
5
Miscellaneous
3
Keywords
awesome
5
awesome-list
5
list
4
cpp
2
algorithm
2
competitive-programming
2
data-structures
2
acm-icpc
2
education
1
books
1
mathematics
1
lecture-notes
1
courses
1
computer-science
1
resources
1
programming-tutorial
1
lists
1
javascript-interview-questions
1
libraries
1
cppcon
1
cpp-library
1
python-interview-questions
1
c-plus-plus
1
c
1
rails-interview
1
ruby
1
awesomeness
1
angularjs-interview-questions
1
android-interview-questions
1
algorithms
1
acm-icpc-handbook
1
youtube
1
training-materials
1
library
1
arabic
1
interview-practice
1
notebook
1
interview-questions
1
contest
1
interviewing
1
cc0
1
javascript
1
resource
1