Skip to content

Learning Resources

This page lists some resources related to competitive programming, including online judging systems, problem collections, books, tools, etc.

Online Judging Platforms

Online Judging System (OJ) is generally used for problem-solving practice, participating in and organizing contests, and sharing among users.

Domestic

  • 51Nod: Contains many mathematical and thinking problems worth trying.
  • Comet OJ: Started in 2018, aiming to provide a platform for algorithm enthusiasts to compete, practice, and communicate. It frequently hosts original high-quality contests and has a rich problem set.
  • HDU Online Judge: Started in 2005, the online judging system of Hangzhou Dianzi University, includes problems from multi-school training.
  • HydroOJ: Started in 2021, the official site for the open-source project Hydro. Users can create their own domains, where they can use features like problem sets, contests, and discussions available on the main site.
  • Judge Duck Online: Based on the open-source project JudgeDuck developed by 松松松, it can measure program runtime with microsecond precision. (Limited number of problems)
  • LibreOJ: Started in 2017. Based on the open-source project Lyrio, "Libre" means freedom. All test data and submitted code are open to all users. Currently maintained by Menci.
  • CDOJ: The online judging system of University of Electronic Science and Technology of China, started in 2012.
  • Luogu: Started in 2013, has a large community and a comprehensive collection of OI contest problems and exercises. Provides paid educational services.
  • Nowcoder: Started in 2014, provides services for technical job preparation, community communication, and corporate recruitment.
  • OpenJudge: Started in 2005, a group judging platform developed by the POJ team.
  • POJ: Peking University Online Judge, started in 2003, one of the oldest OJs in China. Contains many English problems, ranging from basic to challenging ones. Problems from POJ can also be submitted on the Bailian problem set.
  • PTA (Pintia): Started in 2016, a product of Hangzhou Baiteng Education Technology Co., Ltd., derived from Zhejiang University.
  • QOJ: Collects many domestic and international OI and ICPC contest problems, valuable for training.
  • Universal Online Judge: Started in 2014, "Universal" implies general-purpose, project open-source; VFK's OJ: features many original contest problems and CCF/THU problems, with high difficulty.
  • Vijos: Started in 2005. Server and judge projects are open-source.
  • WZOI: Started in 2017, an open-source judging system maintained by Wenzhou Middle School, Zhejiang Province.
  • ZOJ: Zhejiang University Online Judge, started in 2001.

International

  • AizuOJ: University of Aizu Online Judge (Japan), started in 2004. Includes problems from various Japanese high school and university programming contests, with built-in introductory courses on programming/data structures/algorithms.
  • AtCoder: Japanese OJ, the Japanese version includes contests from Japanese universities, not displayed in English. Problems are interesting and of high quality.
  • CodeChef: Indian OJ, hosts periodic contests. System based on SPOJ's Sphere Engine.
  • Codeforces: Russian OJ, started in 2010, founded by Mike Mirzayanov. Features various contest series and supports individual problem setting and contest organization. Problems are of high quality.
  • CSES (Code Submission Evaluation System): A problem set categorized by topics, aiming to be a comprehensive, high-quality problem set, mainly developed by Antti Laaksonen, author of Competitive Programmer’s Handbook, started in 2013.
  • CS Academy
  • DMOJ: Canadian open-source OJ, supports many languages; problem set archives major contests and also hosts regular self-organized contests.
  • HackerRank: Hosts many contests.
  • Kattis: Problem set mainly includes ICPC-style problems; assigns user levels based on problem-solving performance and recommends problems of trivial/easy/medium/hard difficulty suitable for the user's level. Problem difficulty is assessed using a system similar to ELO rating.
  • LeetCode: A website for programmers to practice interview problems, with a Chinese sub-site: LeetCode China.
  • Light OJ
  • Open Trains: Training platform for Russian Open Cup contests, built on the open-source system ejudge, supports virtual contests; problem set includes past Open Cup problems and Petrozavodsk training camp problems.
  • SPOJ: Started in 2003, its backend system Sphere Engine was commercialized in 2008; supports problem liking and tagging.
  • TopCoder: Started in 2001, its competitive programming community hosts many contests; current main business is technology crowdsourcing.
  • TimusOJ: Started in 2000, developed by Ural Federal University, has the largest online judge problem set in Russia. Problems mainly come from Ural Federal University contests, Ural Championships, ICPC Ural Regional Contests, and Petrozavodsk training camps.
  • Online Judge (formerly UVaOJ): Started in 1995, the earliest internationally renowned OJ, founded by Professor Miguel Ángel Revilla from University of Valladolid (UVa), Spain; due to Professor Revilla's unfortunate passing in 2018 and the university's termination of maintenance, UVaOJ was renamed to Online Judge in July 2019. The current maintainers are building a new judging platform on GitHub.
  • Yandex: Archives recent years of the All-Russian Olympiad in Informatics.

Tutorials and Materials

Books

This list notes the authors of the books; translators are not listed. Since there are no duplicate book names and they are easy to find, ISBNs are not provided.

  • Liu Rujia Series
  • Algorithm Competition Advanced Guide - Li Yudong
  • Aha! Algorithms - Ji Lei
    • Targets beginners or those with initial interest, includes humorous illustrations.
  • CCF Middle School Student Computer Programming Series
    • CCF Middle School Student Computer Programming - Introduction - Chen Ying, Qiu Guixiang, Zhu Quanmin
    • CCF Middle School Student Computer Programming - Fundamentals - Jiang Tao, Song Xinbo, Zhu Quanmin
    • CCF Middle School Student Computer Programming - Advanced - Xu Xianyou, Zhu Quanmin
    • CCF Middle School Student Computer Programming - Professional (Not yet published)
  • Head First Series
    • Head First Programming Competition - Fundamentals - Luogu Online School Teaching and Research Group
  • Yibentong Series
    • Informatics Olympiad One Book - Dong Yongjian
    • Informatics Olympiad One Book - Advanced - Huang Xinjun, Dong Yongjian
    • Informatics Olympiad One Book - Expert Training - Huang Xinjun, Dong Yongjian
  • Other textbooks by famous domestic OI coaches
    • Informatics Olympiad Course by Course - Lin Houcong
    • Smart People's Game: Exploring Informatics - Advanced - Jiang Tao, Chen Maoxian
    • Introduction to Computing: C++ Programming and Informatics Competition Primer - Jin Jing
    • Algorithm Competition Treasure - Zhang Xinhua
  • ACM International Collegiate Programming Contest Series
    • ACM International Collegiate Programming Contest Series: Knowledge and Introduction - Yu Yong
    • ACM International Collegiate Programming Contest Series: Algorithms and Implementation - Yu Yong
    • ACM International Collegiate Programming Contest Series: Problems and Solutions - Yu Yong
  • From Introduction to Advanced in Algorithm Competitions - Luo Yongjun, Guo Weibin
  • Introduction to Algorithms, Third Edition - Thomas H.Cormen/Charles E.Leiserson/Ronald L.Rivest/Clifford Stein
    The classic "CLRS" university textbook. Original English title: Introduction to Algorithms
  • Concrete Mathematics, Second Edition - Ronald L. Graham/Donald E. Knuth/Oren Patashnik
    Original English title: Concrete Mathematics
  • Introductory Combinatorics, Fifth Edition - Richard A.Brualdi
    Original English title: Introductory Combinatorics
  • Challenge Programming Contest Full Set - Akiya Takuya, Iwata Yoichi, Kitagawa Yoshitoshi
    Easy to understand.
  • Algorithms - Sanjoy Dasgupta/Christos Papadimitriou/Umesh Vazirani
    • Concise and to the point, but content is relatively brief.
  • Legend-K's Notes on Data Structures and Algorithms
  • acm-cheat-sheet
  • Competitive Programmer’s Handbook - Antti Laaksonen
    • The author spent three years of personal time to complete it. Targets algorithm competitions, covers a wide range with appropriate depth.
  • Programming Challenges: The Programming Contest Training Manual - Steven S. Skiena/Miguel A. Revilla
  • C++, Programming Challenges - Advanced Training Guide for Programming Contests - Qiu Qiu
  • Data Structures (C++ Language Edition, 3rd Edition) - Deng Junhui
    • Recommended to use alongside the companion course, companion slides, and exercise solutions.
  • Computational Geometry: Algorithms and Applications - Mark de Berg et al., translated by Deng Junhui
    Original English title: Computational Geometry: Algorithms and Applications
  • Handbook of Data Structures and Applications, 2nd Edition
    • Co-authored by many famous professors like Sartaj Sahni, Hanan Samet, Weiss, etc. Contains extensive content, recommended for data structure enthusiasts with some foundation.
  • Algorithms Illuminated Series
    • Textbook for beginners with language foundation, recommended to use with the companion course.
    • Algorithms Illuminated, Part 1: The Basics - Tim Roughgarden
    • Algorithms Illuminated, Volume 1: Algorithm Basics - Translated by Xu Bo
    • Algorithms Illuminated, Part 2: Graph Algorithms and Data Structures - Tim Roughgarden
    • Algorithms Illuminated, Volume 2: Graph Algorithms and Data Structures - Translated by Xu Bo
    • Algorithms Illuminated, Part 3: Greedy Algorithms and Dynamic Programming - Tim Roughgarden
    • Algorithms Illuminated, Part 4: Algorithms for NP-Hard Problems - Tim Roughgarden

Courses

Tools

Problem Sets and Resources