tedukuri 是「手作り」的意思,读作「てづくり」(近似英文 tezukuli),指的是由《算法竞赛进阶指南》的作者、读者一起,用自己的双手共同维护的资源社区。为此,我们选择了 GitHub 这个世界上最大的 Programmer Community 作为支持平台。
全新排版修订的《算法竞赛进阶指南》已经上线啦,请大家认准大象出版社和新的封面,出版社的官方网店是:https://item.jd.com/10067239761146.html
本书官方的视频教材正在陆续上线,大家可以前往 AcWing 学习。
- 0x50 动态规划(20 小时): https://www.acwing.com/activity/content/35/
- 0x60 图论(30 小时): https://www.acwing.com/activity/content/41/
目前,这个 repo 里包含以下内容:
- 第一版(2018 年 1 月第一次印刷)最新勘误(更新于 2018 年 6 月 5 日)
- 第二次修订(2018 年 6 月印刷)最新勘误(更新于 2018 年 11 月 26 日)
- 第三次修订(2018 年 11 月印刷)最新勘误(更新于 2018 年 11 月 26 日)
- 第四次修订(2019 年 4 月印刷)未提供勘误
- 第五次修订(2019 年 9 月印刷,印数 13001-17000)未提供勘误
========== 本书前五次修订版已停止 QQ 答疑等技术支持,视频课基于第六版及以上,建议更换新版 ==========
- 第六次修订(2020 年 8 月印刷,印数 17001-22000)最新勘误(更新于 2021 年 3 月 27 日)
- 第七次修订(2021 年 8 月印刷,印数 22001-27000)暂无勘误
- 本书每次印刷都有修订和更新(其中第二、三次修订变化较大),只是为了避免重新申请 ISBN 码,所以第 X 版在版权页标注的都是第一版第 X 次印刷。
- 包含本书专用题库、最新题目提交地址和标程、数据配备情况的附录表格
- 最新配套内容(随时更新习题翻译、标程、测试数据、习题题解等)
相比原书第一版配套光盘,这个 repo 已经先后多次增加了数十道 POJ 题目和 BZOJ 题目的测试数据,以及 OJ 未收录题目的测试数据,请参照提交历史(commits)或者最新的附录 PDF。 相比第四次修订版配套光盘,这个 repo 于 2019 年 8 月 17 日补齐了全书 99% 题目的测试数据。
- 可以直接点击页面上的绿色按钮"Clone or download",下载整个 zip 压缩包(由于你懂的原因,速度可能会比较慢)。
- 也可以在本地安装 Git 命令行或图形界面客户端,
git clone
(克隆)项目仓库,以后每次执行git pull
都可以快速地增量更新。 - 还可以找到想要的文件,直接右键另存为(只能保存单个文件,不能保存文件夹,数据文件较多时会比较麻烦)。
可以访问 Contest Hunter 上的本书专用题库,这里对书中大部分例题、习题均有收录,并公开测试数据和所有用户提交的代码。另外 AcWing 也翻译并收录了本书全部题目。
不熟悉的读者可能觉得书上的部分题目在 BZOJ 上找不到,这是因为 BZOJ 隐藏了部分题目(又称为权限题),只对收费的 VIP 用户开放。
可以联系 BZOJ 管理员,购买 2 年 VIP 服务,价格在几百元左右,到了 NOI 阶段 BZOJ 上的题目有很高的价值。- 你也可以访问 CH 上的本书专用题库,直接免费做到这些题目中的绝大部分(原本是国内外公开比赛的题目)。
BZOJ 现已停止运营,请自己寻找解决方案。
可以去 OpenJudge 上的百练题库搜索一下题目标题,OpenJudge 也是北大运营的,题目与 POJ 有很大重合。 另外,本书专用题库已经实现了对 OpenJudge 的远端评测 (Virtual Judge),也可以直接提交。
- 即使是国内正规的比赛、最近新兴的 OJ 上(Luogu, LibreOJ 等)的题目,很多也是翻译、借鉴自国外的 idea。对于同种 idea 的题目,出于尊重原创者的考虑,我们一般会以最早的来源为标准。
- 提高英文水平(至少到能看懂题面的程度)对于日后阅读科学文献和 PKU/THU 的选拔都很有帮助,很快你就会习惯了,不会耽误你的时间。
- 实在是觉得费劲的话,可以 Google/Bing 一下"POJXXXX"或题目标题等关键字,搜索引擎可能会给出别人总结的题意,甚至是在其他中文 OJ 上的翻译版本噢!不过缺点是你可能会不小心搜到题目的解法。
除作者不断收集外,当读者获得数据或自己生成了数据,或者认为自己的解法独具一格、代码很具有参考价值时,非常欢迎为这个 repo 作出贡献。您的用户名将会永远地记录在提交历史 (commits) 中,并展示在 contributors 页面。您将对自己的改动负责,因此请确保其没有版权问题。
作为一名程序员,学习使用 Git 是一项基本生存技能。下面的步骤是给不熟悉 Git 相关流程的读者阅读的:
- 注册 GitHub 账户,并
fork
这个 repo 的最新副本到自己的账户下。 clone
该副本到本地计算机,并创建一个新的分支 (branch)。- 作出改动,在自己的分支上提交 (commit),并写上一句简短、恰当的改动说明。
- 打开一个
Pull Request
,请求合并改动到原 repo,等待审核通过或得到修改意见。
更详细的指南请参考 Git 手册。您可能需要安装软件来获得 Git 命令行或图形化界面工具。