This page mainly lists online judges, problem collections, books, tools, and other resources related to algorithm competitions.
Online Judges
An online judging system (English: Online Judging System, abbreviated as OJ) is generally used for problem-solving practice, participating in and organizing contests, and communication and sharing among users.
Mainland China
- 51Nod: many worthwhile mathematics and thinking problems to try.
- Comet OJ: started in 2018, aiming to provide a platform for algorithm enthusiasts to compete, practice, and communicate; it frequently holds high-quality original contests and has a rich problem archive.
- HDU Online Judge started in 2005. It is the online judging system of Hangzhou Dianzi University and has problems from multi-university training contests.
- HydroOJ: started in 2021, and is the official site of the open-source project Hydro. Users can create their own domains, where they can use functions available on the main site, such as problem archives, contests, and discussions.
- Judge Duck Online was developed by SongSongSong based on the open-source project JudgeDuck, and can measure the runtime of judging programs precisely to the microsecond. (There are relatively few problems.)
- LibreOJ: started in 2017. Based on the open-source project Lyrio, with Libre meaning freedom. All test data for problems and submitted code are open to all users. It is currently maintained by Menci.
- CDOJ: the online judging system of the University of Electronic Science and Technology of China, started in 2012.
- Luogu: started in 2013, with a large community and a relatively complete collection of real and practice problems from various OI contests. It provides paid educational services.
- Nowcoder: started in 2014, providing services such as technical job-search preparation, community communication, and enterprise recruitment.
- OpenJudge: started in 2005, a group judging platform developed by the POJ team.
- POJ: Peking University Online Judge, started in 2003 and one of the oldest OJs in China. It contains many problems in English, including both introductory problems and worthwhile challenges. POJ problems can be submitted in the Bailian problem archive.
- PTA (Pintia A): started in 2016, a product of Hangzhou Baiteng Education Technology Co., Ltd., which originated from Zhejiang University.
- QOJ: collects many OI and ICPC contest problems from China and abroad, with considerable training value.
- Universal Online Judge: started in 2014, with Universal meaning general-purpose; the project is open source. VFK's OJ has many original contest problems and CCF/THU problems, with relatively high difficulty.
- Vijos: started in 2005. Projects such as the server and judge are open source.
- WZOI: started in 2017, an open-source judging system maintained by Wenzhou High School in Zhejiang Province.
- ZOJ: Zhejiang University Online Judge, started in 2001.
Outside Mainland China
- AizuOJ: the online judging system of the University of Aizu in Japan, started in 2004. It contains problems from several Japanese high-school and university programming contests, and includes introductory courses in programming, data structures, and algorithms.
- AtCoder: a Japanese OJ. Its Japanese version has contests from Japanese universities that are not shown in the English version. Its problems are interesting and generally high quality.
- CodeChef: an Indian OJ that holds contests periodically. Its system is based on SPOJ's Sphere Engine.
- Codeforces: a Russian OJ, started in 2010, founded by Mike Mirzayanov. It has multiple contest series and supports individual problem setting and applications to organize contests. Its problems are generally high quality.
- CSES(Code Submission Evaluation System), a problem archive organized by topic, intended to become a comprehensive high-quality problem archive. It was developed mainly by Antti Laaksonen, the author of Competitive Programmer’s Handbook, and started in 2013.
- CS Academy
- DMOJ, an open-source Canadian OJ with broad language support. Its problem archive consists of records of major contests, and it also holds its own contests regularly.
- HackerRank has many contests.
- Kattis: its problem archive mainly contains problems similar to those in ICPC contests. It rates users according to their problem-solving performance and recommends problems in four difficulty categories—trivial, easy, medium, and hard—suited to their level; problem difficulty is evaluated using a system similar to Elo ratings.
- LeetCode, a problem-solving website for software-engineering interviews, has a Chinese site: LeetCode China.
- Light OJ
- Open Trains: a training platform for Russia's Open Cup contests, built on the open-source ejudge system. It supports virtual contests; its problem archive contains problems from previous Open Cup contests and the Petrozavodsk training camp.
- SPOJ, started in 2003. Its back-end system, Sphere Engine, was commercialized in 2008; it supports problem likes and tags.
- TopCoder, started in 2001. Its competitive programming community has many contests; its main business is now technical crowdsourcing.
- TimusOJ, started in 2000 and developed by Ural Federal University, has the largest online judging problem archive in Russia. Its problems mainly come from university contests at Ural Federal University, the Ural Championship, the ICPC Ural Regional Contest, and the Petrozavodsk training camp.
- Online Judge (formerly UVaOJ) started in 1995 and was the earliest OJ to become internationally renowned. Its founder was Professor Miguel Ángel Revilla of the University of Valladolid (UVa) in Spain. Because Professor Revilla sadly passed away in 2018 and the University of Valladolid stopped maintaining it, UVaOJ was renamed Online Judge in July 2019. The platform's current maintainers are building a new judging platform on GitHub.
- Yandex has archived the All-Russian Olympiad in Informatics from the past several years.
Tutorial Materials
- OI Wiki
- A collection of tutorials compiled by users on Codeforces
- The English E-Maxx algorithm tutorials
- Algorithm Notes: tutorials compiled by National Taiwan Normal University.
- How to prepare for ACM-ICPC? - geeksforgeeks
- Tutorials compiled by Topcoder
- Guide to campus-recruitment interviews
- Courseware collected and compiled from the Internet by hzwer
- Courseware by Trinkle23897
- Courseware by huzecong
- Open Data Structures: contains lecture notes on many data structures.
- IOI Syllabus (2020)
Books
The authors of the books in this list are indicated; translators are not listed. Since there are no books with the same titles and they are easy to find, ISBNs are not provided.
- Liu Rujia series
- Classic Introduction to Algorithm Competitions (purple)
- Classic Introduction to Algorithm Competitions—Training Guide (white/blue) - coauthored with Chen Feng
- The Art of Algorithms and Informatics Competitions (blue/black)
- Advanced Guide to Algorithm Competitions - Li Yudong
- Aha! Algorithms - Ji Lei
- For beginners or people with an initial interest; includes humorous illustrations.
- CCF Series on Computer Programming for Middle School Students
- CCF Computer Programming for Middle School Students—Introduction - Chen Ying, Qiu Guixiang, and Zhu Quanmin
- CCF Computer Programming for Middle School Students—Basics - Jiang Tao, Song Xinbo, and Zhu Quanmin
- CCF Computer Programming for Middle School Students—Advanced - Xu Xianyou and Zhu Quanmin
- CCF Computer Programming for Middle School Students—Professional (not published)
- Step-by-Step series
- Step-by-Step Programming Contests—Basics - Luogu Online School's teaching and research team
- One Book Through series
- One Book Through the Olympiad in Informatics - Dong Yongjian
- One Book Through the Olympiad in Informatics—Advanced - Huang Xinjun and Dong Yongjian
- One Book Through the Olympiad in Informatics—Expert Training - Huang Xinjun and Dong Yongjian
- Other textbooks written by renowned OI coaches in China
- Complete Guide to the Olympiad in Informatics - Lin Houcong
- The Game of Smart People: Exploring Informatics—Advanced - Jiang Tao and Chen Maoxian
- Introduction to Computing: C++ Programming and the Olympiad in Informatics - Jin Jing
- The Algorithm Competition Compendium - 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 Explanations - Yu Yong
- From Beginner to Advanced in Algorithm Competitions - Luo Yongjun and Guo Weibin
- Introduction to Algorithms, third edition - Thomas H.Cormen/Charles E.Leiserson/Ronald L.Rivest/Clifford Stein
A classic university textbook, known as the black book. The original English title is Introduction to Algorithms. - Concrete Mathematics, second edition - Ronald L. Graham/Donald E. Knuth/Oren Patashnik
The original English title is Concrete Mathematics. - Introductory Combinatorics, fifth edition - Richard A.Brualdi
The original English title is Introductory Combinatorics. - Challenge Programming Contest complete set - Takuya Akiha, Yoichi Iwata, and Yoshitoshi Kitagawa Written in an easy-to-understand style.
- The Algorithms - Sanjoy Dasgupta/Christos Papadimitriou/Umesh Vazirani
- Concise and comprehensive, but with relatively little content.
- Notes on Data Structures and Algorithms by Legend-K
- acm-cheat-sheet
- Competitive Programmer’s Handbook- Antti Laaksonen
- The author spent three years of personal time completing it. It is aimed at algorithm competitions, has broad coverage, and balances detail and brevity well.
- Programming Challenges: The Programming Contest Training Manual- Steven S. Skiena/Miguel A. Revilla
- Written by two professors from the University of Valladolid in Spain.
- Read the translated online electronic edition.
- Purchase the paper edition.
- C++, Programming Challenges—An Advanced Guide to Programming Contest Training - Qiu Qiu
- Data Structures (C++ Language Edition, 3rd Edition) - Deng Junhui
- Recommended to use together with the accompanying course, courseware, and exercise explanations.
- Computational Geometry: Algorithms and Applications - written by Berg (M.D. Berg) and translated by Deng Junhui
The original English title is Computational Geometry: Algorithms and Applications. - Handbook of Data Structures and Applications, 2nd Edition
- Coauthored by many renowned professors, such as Sartaj Sahni, Hanan Samet, and Weiss. It contains a lot of material and is recommended for data-structure enthusiasts with some foundation.
- Algorithms Illuminated series
- Textbooks for beginners with a foundation in programming languages; recommended to use together with the accompanying course.
- Algorithms Illuminated, Part 1: The Basics - Tim Roughgarden
- Algorithms Illuminated, Part 1: Algorithm Basics - translated by Xu Bo
- Algorithms Illuminated, Part 2: Graph Algorithms and Data Structures - Tim Roughgarden
- Algorithms Illuminated, Part 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
- CMU 15-295 (2025)
- LSU: CSC 2700 (2024)
- NUS: CS 3233 (2021)
- Reykjavik: T-414-ÁFLV (2016)
- Stanford: CS 97SI (2015)
- Stonybrook: CSE 392 (2012)
- UBC: CPSC 490 (2021)
- UCF: COP 4516 (2025)
- THU: Data Structures
- THU: Computational Geometry
- StanfordOnline: Algorithms: Design and Analysis
Tools
- 100 gdb Tips
- Algorithm Visualizer
- cppreference: a comprehensive online reference for the C and C++ languages and their standard libraries.
- Compiler Explorer: view the assembly statements corresponding to compiled code blocks online, with support for choosing different compilers.
- C++ Insights: view your C++ source code from the compiler's perspective.
- Inverse Symbolic Calculator: reverse-search expressions over the real numbers, suitable for working backward to identify constants.
- handwritten symbol recognition
- mathematical formula reference
- Mathpix: convert screenshots to .
- OEIS: an integer sequence search engine.
- Python Tutor: visualize code execution.
- Quick C++ Benchmark: compare the runtime of two or more functions online.
- Try It Online: run code in 600+ languages online, with interactive I/O, a 60-second timeout, and code sharing.
- Graph Theory Drawing Board and GraphViz
- uDebug: provides debugging assistance for some OJ problems.
- USF and VisuAlgo: algorithm visualization.
- Wandbox: online code execution, supporting 30+ languages, code sharing, and different compiler versions.
- Wolfram Alpha: can compute problems across many topics, including mathematics, science and technology, and society and culture.
Problem Sets and Resources
- POJ training plan
- USACO
- Luogu problem list
- A problem list posted by -Morass- on Codeforces
- A collection of high-quality algorithm articles from the Codeforces community: part 1 part 2
- Example problems from Peking University's ICPC summer-course courseware
- Peking University's ICPC summer-course courseware
- GitHub.com:OI-wiki/libs
- Multi-university training Keyword:
Multi-University Training Contest - Vjudge
- Project Euler
- Junior Training Sheet: a training plan friendly to beginners.
- USACO Guide: training resources categorized by the different levels of USACO.