Skip to content

lydrainbowcat/tedukuri

Repository files navigation

tedukuri

tedukuri 是「手作り」的意思,读作「てづくり」(近似英文 tezukuli),指的是由《算法竞赛进阶指南》的作者、读者一起,用自己的双手共同维护的资源社区。为此,我们选择了 GitHub 这个世界上最大的 Programmer Community 作为支持平台。

购书链接 Buy the Book

全新排版修订的《算法竞赛进阶指南》已经上线啦,请大家认准大象出版社和新的封面,出版社的官方网店是:https://item.jd.com/10067239761146.html

视频课 Videos

本书官方的视频教材正在陆续上线,大家可以前往 AcWing 学习。

Contents

目前,这个 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% 题目的测试数据。

Instructions

如何下载 GitHub 上的资源?

  1. 可以直接点击页面上的绿色按钮"Clone or download",下载整个 zip 压缩包(由于你懂的原因,速度可能会比较慢)。
  2. 也可以在本地安装 Git 命令行或图形界面客户端,git clone(克隆)项目仓库,以后每次执行 git pull 都可以快速地增量更新。
  3. 还可以找到想要的文件,直接右键另存为(只能保存单个文件,不能保存文件夹,数据文件较多时会比较麻烦)。

如何做书中“OJ 未收录”或“来源于非主流 OJ”的题目?

可以访问 Contest Hunter 上的本书专用题库,这里对书中大部分例题、习题均有收录,并公开测试数据和所有用户提交的代码。另外 AcWing 也翻译并收录了本书全部题目。

如何做 BZOJ 隐藏题目?

不熟悉的读者可能觉得书上的部分题目在 BZOJ 上找不到,这是因为 BZOJ 隐藏了部分题目(又称为权限题),只对收费的 VIP 用户开放。

  1. 可以联系 BZOJ 管理员,购买 2 年 VIP 服务,价格在几百元左右,到了 NOI 阶段 BZOJ 上的题目有很高的价值。
  2. 你也可以访问 CH 上的本书专用题库,直接免费做到这些题目中的绝大部分(原本是国内外公开比赛的题目)。

BZOJ 现已停止运营,请自己寻找解决方案。

POJ 突然挂了怎么办?

可以去 OpenJudge 上的百练题库搜索一下题目标题,OpenJudge 也是北大运营的,题目与 POJ 有很大重合。 另外,本书专用题库已经实现了对 OpenJudge 的远端评测 (Virtual Judge),也可以直接提交。

为什么选用了很多老牌 OJ 的英文题目,英文捉鸡怎么办呢?

  1. 即使是国内正规的比赛、最近新兴的 OJ 上(Luogu, LibreOJ 等)的题目,很多也是翻译、借鉴自国外的 idea。对于同种 idea 的题目,出于尊重原创者的考虑,我们一般会以最早的来源为标准。
  2. 提高英文水平(至少到能看懂题面的程度)对于日后阅读科学文献和 PKU/THU 的选拔都很有帮助,很快你就会习惯了,不会耽误你的时间。
  3. 实在是觉得费劲的话,可以 Google/Bing 一下"POJXXXX"或题目标题等关键字,搜索引擎可能会给出别人总结的题意,甚至是在其他中文 OJ 上的翻译版本噢!不过缺点是你可能会不小心搜到题目的解法。

Contributions

除作者不断收集外,当读者获得数据或自己生成了数据,或者认为自己的解法独具一格、代码很具有参考价值时,非常欢迎为这个 repo 作出贡献。您的用户名将会永远地记录在提交历史 (commits) 中,并展示在 contributors 页面。您将对自己的改动负责,因此请确保其没有版权问题。

作为一名程序员,学习使用 Git 是一项基本生存技能。下面的步骤是给不熟悉 Git 相关流程的读者阅读的:

  • 注册 GitHub 账户,并 fork 这个 repo 的最新副本到自己的账户下。
  • clone 该副本到本地计算机,并创建一个新的分支 (branch)。
  • 作出改动,在自己的分支上提交 (commit),并写上一句简短、恰当的改动说明。
  • 打开一个 Pull Request,请求合并改动到原 repo,等待审核通过或得到修改意见。

更详细的指南请参考 Git 手册。您可能需要安装软件来获得 Git 命令行或图形化界面工具。