CCPC/ICPC
此小节参考 OI-wiki。
赛事介绍
ICPC
ICPC(英文:International Collegiate Programming Contest,中文:国际大学生程序设计竞赛)由 ICPC 基金会(英文:ICPC Foundation)举办,是最具影响力的大学生计算机竞赛。由于以前 ACM 赞助这个竞赛,也有很多人习惯叫它 ACM 竞赛。
ICPC 主要分为区域赛(Regionals)和总决赛(World Finals)两部分。
官网地址:https://icpc.global
CCPC
官网地址:https://ccpc.io
中国大学生程序设计竞赛。
赛制介绍
一般是三个人组成一队使用一台机器,在比赛时有多次提交机会。比赛实时评测并返回结果,如果提交的结果错误会有 20 分钟的罚时,错误次数越多,加罚的时间也越长。每个题目只有在所有数据点全部正确后才能得到分数。比赛排名根据做题数来评判,做题数相同的,根据总用时来评判。总用时是每题用时的和。每题的用时是从比赛开始到做出该题的分钟数与该题的罚时之和。
一些 ICPC 相关赛事中,比赛结束前一小时进行封榜,封榜后的提交和排名将无法被其他选手看见。
在 ICPC 相关赛事中,选手允许带一定量的纸质资料。
除 ICPC 和 CCPC 外,众多比赛也采用该赛制,如 LeetCode 周赛及全国编程大赛、牛客小白赛练习赛挑战赛等。
赛季赛程
- ICPC/CCPC 网络赛(8 月底至 9 月初)
- ICPC/CCPC 区域赛(9 月底至 11 月底)
- ICPC EC Final/CCPC Final(12 月中旬)
- ICPC World Finals(次年 4 月至 6 月)
如何参加
ICPC/CCPC 赛事是无法个人参加的,需要加入学校的 ACM 校队。
对于自己编程水平有一定自信的同学(参考蓝桥省一+)可以关注 QQ 群 526350936,在暑假会组织下一个学年的校队选拔赛。选拔赛的名额一般等于上一年退出的名额,由以下两部分构成:
- 退役的高年级学生
- 上一年只拿到铜牌的队伍(被称作重铸)
选拔难度取决于当年的选拔比例。
如何准备
可以在以下网站中练习:
- HDU Online Judge 始于 2005 年,杭州电子科技大学在线评测系统,有多校训练的题目。
- 洛谷:始于 2013 年,社区群体庞大,各类 OI 的真题和习题较全。提供有偿教育服务。
- POJ:北京大学在线评测系统,始于 2003 年,国内历史最悠久的 OJ 之一。内有很多英文题,既有基础题,也有值得一试的好题。
- PTA(拼题 A):始于 2016 年,浙江大学衍生的杭州百腾教育科技有限公司产品。
- AtCoder:日本 OJ,日文版里会有日本高校的比赛,英文内不会显示。题目有趣,质量较高。
- Codeforces:俄罗斯 OJ,始于 2010 年,创始人是 Mike Mirzayanov。有多种系列的比赛,并支持个人出题、申请组织比赛。题目质量较高。
训练资源
- OI Wiki
- Codeforces 上网友整理的一份教程合集
- 英文版 E-Maxx 算法教程
- 演算法笔记:台湾师范大学总结的教程
- 如何为 ACM-ICPC 做准备?- geeksforgeeks
- Topcoder 整理的教程
- 校招面试指南
- 由 hzwer 收集整理自互联网的课件
- Trinkle23897 的课件
- huzecong 的课件
- Open Data Structure:内含众多数据结构讲稿
- IOI Syllabus (2020)
书籍
- 刘汝佳系列
- 《算法竞赛入门经典》(紫)
- 《算法竞赛入门经典 - 训练指南》(白/蓝)- 陈锋 合著
- 《算法艺术与信息学竞赛》(蓝/黑)
- 《算法竞赛进阶指南》- 李煜东
- 《啊哈算法》- 纪磊
- 面向初学者或有初步兴趣的人群,有幽默配图。
- 深入浅出系列
- 《深入浅出程序设计竞赛 - 基础篇》- 洛谷网校教研组
- 一本通系列
- 《信息学奥赛一本通》- 董永建
- 《信息学奥赛一本通 - 提高篇》- 黄新军,董永建
- 《信息学奥赛一本通 - 高手训练》- 黄新军,董永建
- 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
- 由西班牙 University of Valladolid 的两位教授编写。
- 阅读 经过翻译的在线电子版图书
- 购买 纸质版图书
- 《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
课程
- Baylor: CSI 3144 (2006)
- CMU 15-295 (2021)
- Georgia Tech: CS 4540 (2020)
- Georgia Tech: CS 6550 (2021)
- LSU: CSC 2700 (2021)
- NUS: CS 3233 (2021)
- Reykjavik: T-414-ÁFLV (2016)
- SPSU: Coursera (2019)
- Stanford: CS 97SI (2015)
- Stonybrook: CSE 392 (2012)
- TAMU: CSCE 430 (2021)
- UBC: CPSC 490 (2021)
- UCF: COP 4516 (2021)
- VT: CS 2984/4984 (2020)
- THU: 数据结构
- THU: 计算几何
- StanfordOnline: Algorithms: Design and Analysis
工具
- 《100 个 gdb 小技巧》
- Algorithm Visualizer
- cppreference:一个全面的 C 和 C++ 语言及其标准库的在线参考资料
- Compiler Explorer:在线查看编译后代码块对应的汇编语句,支持选择不同的编译器
- C++ Insights:以编译器的视角去查看你的 C++ 源码
- Inverse Symbolic Calculator:实数反查表达式,适用于反推常数
- \(\rm\LaTeX\) 手写符号识别
- \(\rm\LaTeX\) 数学公式参考
- Mathpix:截图转 \(\rm\LaTeX{}\)
- OEIS:整数数列搜索引擎
- Python Tutor: 代码执行过程可视化
- Quick C++ Benchmark:在线比较两个及以上函数的运行速度
- Try It Online:在线运行 600+ 种语言的代码,支持 IO 交互,超时 60s,可以分享代码
- 图论画板 与 GraphViz
- Ubuntu Pastebin:可用于分享代码
- uDebug:提供一些 OJ 题目的调试辅助
- USF 与 VisuAlgo:算法可视化
- Wandbox: 在线代码运行,支持 30+ 种语言,可以分享代码,支持不同编译器版本
- Wolfram Alpha:可以计算包括数学、科学技术、社会文化……等多个主题的问题
题集和资源
- POJ 训练计划
- USACO
- 洛谷题单
- -Morass- 贴在 Codeforces 上的一份题单
- Codeforces 社区高质量算法文章合集 之一 之二
- 北京大学 ICPC 暑期课课件例题
- 北京大学 ICPC 暑期课课件
- GitHub.com:OI-wiki/libs
- 多校联合训练 关键词:
Multi-University Training Contest
- Vjudge
- Project Euler
- Junior Training Sheet:对新手友好的训练计划
- USACO Guide:针对 USACO 的各个级别分类的训练资源