跳转至

學習資源

本頁面主要列舉了一些與算法競賽有關的在線評測網站、題目合集、書籍、工具等資源。

在線評測平台

在線評測平台(英語:Online Judging System,簡稱:OJ),一般用於刷題訓練,參與和組織比賽,以及用户之間的交流分享。

國內

  • 51Nod:有許多值得嘗試的數學題和思維題。
  • Comet OJ:始於 2018 年,旨在為廣大算法愛好者提供一個競技、練習、交流的平台,經常舉辦原創性的高質量比賽,有豐富的題庫。
  • FZUOJ 始於 2008 年,福州大學在線評測系統。
  • HDU Online Judge 始於 2005 年,杭州電子科技大學在線評測系統,有多校訓練的題目。
  • hihoCoder 始於 2012 年,面向企業招聘,有些題目來自於每週一題,涉及知識點的學習。(登錄後方可查看題面)
  • HydroOJ:始於 2021 年,為開源項目 Hydro 的官方站。用户可以創建自己的 ,域中可以使用題庫、比賽、討論等主站可以使用的功能。
  • 計蒜客 北京矩道優達網絡科技有限公司旗下的核心產品,提供按知識點和難度篩選的信息學題庫和 ICPC 題庫。
  • Judge Duck Online 基於 鬆鬆松 開發的開源項目 JudgeDuck,可以將評測程序的運行時間精確到微秒。(題目較少)
  • LibreOJ:始於 2017 年。基於開源項目 Lyrio,Libre 取自由之意。題目所有測試數據以及提交的代碼均對所有用户開放。目前由 Menci 維護。
  • Lutece:電子科技大學在線評測系統,始於 2018 年,項目開源
  • 洛谷:始於 2013 年,社區羣體龐大,各類 OI 的真題和習題較全。提供有償教育服務。
  • 牛客網:始於 2014 年,提供技術類求職備考、社羣交流、企業招聘等服務。
  • NOJ:南京郵電大學在線評測系統,始於 2008 年,項目開源。自身擁有題目兩千餘道,同時支持對多個國內外 OJ 的提交,可以直接在 NOJ 提交別的 OJ 的題。
  • NTUOJ:台灣大學在線評測系統,始於 2007 年,基於開源項目 Judge Girl
  • OpenJudge:始於 2005 年,由 POJ 團隊開發的小組評測平台。
  • POJ:北京大學在線評測系統,始於 2003 年,國內歷史最悠久的 OJ 之一。內有很多英文題,既有基礎題,也有值得一試的好題。
  • PTA(拼題 A):始於 2016 年,浙江大學衍生的杭州百騰教育科技有限公司產品。
  • 清澄:始於 2005 年,由 胡偉棟 開發。自 2019 年 9 月 1 日起不再對外提供服務。
  • Universal Online Judge:始於 2014 年,Universal 取通用之意,項目開源VFK 的 OJ:多原創比賽題和 CCF/THU 題,難度較高。
  • Vijos:始於 2005 年。服務端評測機 等項目開源。
  • WZOI:始於 2017 年,由浙江省温州中學維護的 開源 評測系統。
  • ZOJ:浙江大學在線評測系統,始於 2001 年。

國外

  • AizuOJ:日本會津大學在線評測系統,始於 2004 年。包含日本若干高中和大學編程比賽的題目,自帶編程/數據結構/算法的入門課程。
  • AtCoder:日本 OJ,日文版裏會有日本高校的比賽,英文內不會顯示。題目有趣,質量較高。
  • CodeChef:印度 OJ,週期舉辦比賽。系統基於 SPOJ 的 Sphere Engine。
  • Codeforces:俄羅斯 OJ,始於 2010 年,創始人是 Mike Mirzayanov。有多種系列的比賽,並支持個人出題、申請組織比賽。題目質量較高。
  • CSES(Code Submission Evaluation System),按專題劃分的題庫,旨在 成為綜合的高質量題庫,目前只有 200 題,主要由 Competitive Programmer’s Handbook 作者 Antti Laaksonen 開發,始於 2013。
  • CS Academy
  • DMOJ 加拿大開源的 OJ,語言支持廣;題庫是各大比賽的存檔,也有定期自行舉辦的比賽。
  • HackerRank 有很多比賽
  • ICPC Live Archive 存檔了 1990 年至今的 ICPC 區域賽和總決賽題目;但部分比賽的評測數據僅為樣例數據,且對 Special Judge 的支持不完善。
  • ICPC Problem Archive 基於 Kattis 系統;存檔了 2012 年至今的 ICPC 全球總決賽題目,並且會在總決賽開賽時同步發放題目(但不會有同步賽)。
  • Kattis 題庫主要包含類似 ICPC 比賽的題目;根據用户解題情況評定用户等級,推薦適合該用户水平的 trivial/easy/medium/hard 四類難度的題目,其中題目難度採用類 ELO 等級分 系統來評估。
  • LeetCode 碼農面試刷題網站,有中文分站:LeetCode China
  • Light OJ 一個快掛了的 OJ,www 域名無法訪問,請使用 根域名 訪問
  • opentrains 俄羅斯 Open Cup 比賽的訓練平台,基於 ejudge 開源系統搭建,支持虛擬比賽;題庫包含歷年 Open Cup 賽題以及 Petrozavodsk 訓練營的題目。
  • SPOJ 始於 2003 年,其後台系統 Sphere Engine 於 2008 年商業化;支持題目點贊和標籤功能。
  • TopCoder 始於 2001 年,其 競技編程社區 有很多比賽;目前主營業務是技術眾包。
  • TimusOJ 始於 2000 年,由 Ural Federal University 開發,擁有俄羅斯最大的在線評測題庫,題目主要來自烏拉爾聯邦大學校賽、烏拉爾錦標賽、ICPC 烏拉爾區域賽、以及 Petrozavodsk 訓練營。
  • Online Judge(前 UVaOJ)始於 1995 年,國際成名最早的 OJ,創始人是西班牙 University of Valladolid (UVa) 的 Miguel Ángel Revilla 教授;由於 Revilla 教授於 2018 年不幸離世,且 Valladolid 大學終止維護,UVaOJ 自 2019 年 7 月起更名為 Online Judge。現在該平台的維護者 正在 GitHub 上構建新的評測平台
  • Yandex 存檔了近幾年的全俄羅斯信息學奧賽。

教程資料

書籍

本列表內註明了書籍作者,譯者未列其中。因無重名書籍且易於尋找,故不標明 ISBN。

  • 劉汝佳系列
  • 《算法競賽進階指南》- 李煜東
  • 《啊哈算法》- 紀磊
    • 面向初學者或有初步興趣的人羣,有幽默配圖。
  • CCF 中學生計算機程序設計系列
    • 《CCF 中學生計算機程序設計 - 入門篇》- 陳穎,邱桂香,朱全民
    • 《CCF 中學生計算機程序設計 - 基礎篇》- 江濤,宋新波,朱全民
    • 《CCF 中學生計算機程序設計 - 提高篇》- 徐先友,朱全民
    • 《CCF 中學生計算機程序設計 - 專業篇》(未出)
  • 深入淺出系列
    • 《深入淺出程序設計競賽 - 基礎篇》- 洛谷網校教研組
  • 一本通系列
    • 《信息學奧賽一本通》- 董永建
    • 《信息學奧賽一本通 - 提高篇》- 黃新軍,董永建
    • 《信息學奧賽一本通 - 高手訓練》- 黃新軍,董永建
  • 其他由國內著名 OI 教練寫的教材
    • 《信息學奧賽課課通》- 林厚從
    • 《聰明人的遊戲:信息學探秘 - 提高篇》- 江濤,陳茂賢
    • 《計算概論:C++ 編程與信息學競賽入門》- 金靖
    • 《算法競賽寶典》- 張新華
  • ACM 國際大學生程序設計競賽系列
    • 《ACM 國際大學生程序設計競賽系列 知識與入門》- 俞勇
    • 《ACM 國際大學生程序設計競賽系列 算法與實現》- 俞勇
    • 《ACM 國際大學生程序設計競賽系列 題目與解讀》- 俞勇
  • 《算法競賽入門到進階》- 羅勇軍,郭衞斌
  • 《算法導論》第三版 - Thomas H.Cormen/Charles E.Leiserson/Ronald L.Rivest/Clifford Stein
    黑書,大學經典教材。英文版原名Introduction to Algorithms
  • 《具體數學》第二版 - Ronald L. Graham/Donald E. Knuth/Oren Patashnik
    英文版原名Concrete Mathematics
  • 《組合數學》第五版 - Richard A.Brualdi
    英文版原名Introductory Combinatorics
  • 《挑戰程序設計競賽》全套 - 秋葉拓哉,巖田陽一,北川宜稔 通俗易懂。
  • 《算法概論》- Sanjoy Dasgupta/Christos Papadimitriou/Umesh Vazirani
    • 提綱摯領,但內容較少。
  • Legend-K 的數據結構與算法的筆記
  • acm-cheat-sheet
  • Competitive Programmer’s Handbook- Antti Laaksonen
    • 作者花了三年個人時間完成。面向算法競賽,覆蓋面廣,詳略得當。
  • 《挑戰編程:程序設計競賽訓練手冊》- Steven S. Skiena/Miguel A. Revilla
  • 《C++,挑戰編程——程序設計競賽進階訓練指南》- 邱秋
  • 《數據結構(C++ 語言版 第 3 版)》- 鄧俊輝
    • 建議隨配套課程、配套課件和習題解析一起使用。
  • 《計算幾何:算法與應用》- 伯格(Berg,M.D.)著,鄧俊輝 譯
    英文版原名Computational Geometry: Algorithms and Applications
  • 《Handbook of Data Structures and Applications, 2nd Edition》
    • 由許多著名教授如 Sartaj Sahni、Hanan Samet、Weiss 等合著,內容較多,建議有一定基礎的數據結構愛好者閲讀。
  • 算法詳解 系列
    • 面向有語言基礎的初學者的教材,建議同配套課程一起使用
    • 《Algorithms Illuminated, Part 1: The Basics》- Tim Roughgarden
    • 《算法詳解,卷 1:算法基礎》- 徐波 譯
    • 《Algorithms Illuminated, Part 2: Graph Algorithms and Data Structures》- Tim Roughgarden
    • 《算法詳解,卷 2:圖算法和數據結構》- 徐波 譯
    • 《Algorithms Illuminated, Part 3: Greedy Algorithms and Dynamic Programming》- Tim Roughgarden
    • 《Algorithms Illuminated, Part 4: Algorithms for NP-Hard Problems》- Tim Roughgarden

課程

工具

題集和資源