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
- OI Wiki
- A collection of tutorials compiled by Codeforces users
- English version of E-Maxx algorithm tutorials
- Algorithm Notes: Tutorials summarized by National Taiwan Normal University
- How to prepare for ACM-ICPC? - geeksforgeeks
- Tutorials compiled by Topcoder
- Coding Interview University
- Course materials collected from the internet by hzwer
- Course materials by Trinkle23897
- Course materials by huzecong
- Open Data Structure: Contains many data structure lecture notes
- IOI Syllabus (2020)
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 Primer Classic (Purple)
- Algorithm Competition Primer Classic - Training Guide (White/Blue) - Co-authored with Chen Feng
- The Art of Algorithms and Informatics Competitions (Blue/Black)
- 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
- Written by two professors from University of Valladolid, Spain.
- Read the translated online e-book
- Purchase the printed book
- 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
- 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 corresponding to compiled code blocks online, supports selecting different compilers
- C++ Insights: View your C++ source code from the compiler's perspective
- Inverse Symbolic Calculator: Real number inverse lookup for expressions, useful for deducing constants
- \(\rm\LaTeX\) handwritten symbol recognition
- \(\rm\LaTeX\) mathematical symbol reference
- Mathpix: Screenshot to \(\rm\LaTeX{}\)
- OEIS: The On-Line Encyclopedia of Integer Sequences
- Python Tutor: Visualize code execution step by step
- Quick C++ Benchmark: Online comparison of runtime speed for two or more functions
- Try It Online: Run code in 600+ languages online, supports IO interaction, 60s timeout, shareable code
- Graph Editor and GraphViz
- uDebug: Provides debugging assistance for some OJ problems
- USF and VisuAlgo: Algorithm visualization
- Wandbox: Online code execution, supports 30+ languages, shareable code, supports different compiler versions
- Wolfram Alpha: Can compute answers across many topics including mathematics, science & technology, society & culture, etc.
Problem Sets and Resources
- POJ Training Plan
- USACO
- Luogu Problem Lists
- A problem list posted by -Morass- on Codeforces
- Codeforces community high-quality algorithm article collections Part 1 Part 2
- Peking University ICPC Summer Course Example Problems
- Peking University ICPC Summer Course Slides
- GitHub.com:OI-wiki/libs
- Multi-University Training Contests Keyword:
Multi-University Training Contest - Vjudge
- Project Euler
- Junior Training Sheet: A beginner-friendly training plan
- USACO Guide: Training resources categorized by USACO levels
本页面最近更新:,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:OI-wiki
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用