从零到进实验室

省流版

三步,按顺序做:

  1. 装环境。看群文件《IDE 选择与配置教程》,挑一个 IDE 装上(新手推荐 CLion),能跑出一个最简单的程序就算过。
  2. 注册洛谷。看群文件《洛谷使用指南》,打开训练题单 https://www.luogu.com.cn/training/597858,把 P1001 做出来提交一次,走通「写代码 → 提交 → AC」这个流程。
  3. 学 C++ 基础语法。跟着 B 站视频或者《深入浅出程序设计竞赛(基础篇)》学,边学边把题单里对应的题做掉。

达标标准:入门题单前 50 题里完成 30 题,就可以报名正式面试,面试通过后加入实验室。新生赛打到要求、有信竞基础走提前面试,也能进。

要花多久:基础语法一到两周能过一遍,具体看每天投入多少时间、之前有没有接触过编程。

卡住了:先自己分析,再看资料、问 AI 或者直接在群里问。

零基础不用慌,实验室的门槛就是按零基础定的。

写在前面

这份东西是写给刚开始接触电脑和编程的同学的。不管你有没有打算加 ACM 实验室,都值得看一遍:这里要学的东西,跟这学期马上要上的程序设计课、之后的数据结构课高度重合,自己提前学一遍,上课就是复习,作业和考试都不吃亏;往后不管是考研还是找工作,学的还是这些东西。差别只在于你是等到大二被课程推着走,还是现在自己先走一遍。

打算加实验室的话就更直接了。实验室比图书馆适合计算机的学生:可以放心用电脑,不用担心风扇声音吵到别人;时间也自由,图书馆闭馆了还能接着学;自己的东西放在工位上,不用每天来回背。

本篇只介绍学习路径,群文件和精华消息还有很多资料,建议多看看。

按顺序往下做,第二节和第三节做完,就够格来面试了。有不懂的、卡住的,直接丢招新群里问,别自己憋着。

一、先搞清楚目标

进实验室有三条路,走通任意一条就行:

  1. 完成入门题单 + 通过正式面试
  2. 在新生赛里打到要求的成绩
  3. 以前搞过信息学竞赛、对自己水平有把握,直接来提前面试

大部分人走第一条。这条路上说白了只有一件事:学会 C++ 基础语法,在入门题单里做出 30 题。

这两件事其实是同一件事。题单里的题就是拿来练语法的,学基础语法的过程本来就要做题,不用把它当成两道关卡。用题单来卡,是因为做题记录能直接看出你学到哪了,比嘴上说"我学完了"靠谱。

30 题只统计自己写出来的。看题解或者问 AI 之后,自己重新敲一遍写对的算数;直接抄答案的不算,题单做完会统一查重。

更多具体信息看群内公告、群文件、精华消息。

零基础的同学完全不用担心。实验室的门槛就是按零基础定的,学得慢一点、偶尔卡壳都很正常,遇到困难及时求助,别自己硬扛。

二、开始之前

2.1 需要什么电脑

需要一台自己的电脑,实验室的活动都得自己带电脑来写代码。

还没买的赶紧买。 不管加不加入实验室,电脑对计算机专业的学生都是必需品,早买早用。

算竞对电脑配置要求很低,能正常开机、能装软件、能跑得动 Dev-C++ 或者 CLion 就行,不用独显,不用买新的。手里有笔记本就直接用。

2.2 几个电脑常识

会用电脑,比会写 C++ 更基础。这一节说的如果你早就会了,直接跳到下一节;以前没怎么碰过电脑的同学,建议这几天补习一下:去 B 站、知乎搜"电脑基础操作""Windows 使用入门"这类关键词,平时多刷相关内容,平台的推荐也会慢慢推给你用得上的东西。最管用的办法是用,多用、多折腾,自然就熟了。

具体说几个零基础的同学经常卡住的地方:

  • 解压。压缩包(.zip .7z .rar)不能直接双击运行,要先解压成普通文件夹。系统自带的解压工具打不开 .7z 和 .rar 时,装个 7-Zip 或者 Bandizip 就行。
  • 文件在哪。下载的东西默认在「下载」文件夹,桌面上的也在 C 盘用户目录下。建议现在就去 C 盘或 D 盘建一个 code 文件夹,以后所有代码都放里面,别乱丢。
  • 显示扩展名。打开文件资源管理器的「查看」→ 勾上「文件扩展名」,不然你分不清 a.cpp 和 a.exe。
  • 纯英文路径。以后装编译器、建工程,路径尽量全用英文和数字,能省掉一堆环境兼容问题。

2.3 装 IDE 配环境

IDE 就是写代码的软件。群文件里有《IDE 选择与配置教程》,安装包和每一步截图都在里面,照着做。

三款里挑一个就行:

  • CLion:开箱即用,功能最全,配置最简单,新手首选
  • VSCode:插件多、写题舒服,但要自己配的东西也多
  • Dev-C++:学校机房只装了它,军训结束开始上课之后,实践课上迟早要用,新建文件、写代码、编译运行这几个操作得会。平时训练不推荐用它

装完先跑通一个最简单的程序,能编译、能运行、能在控制台看到输出,再往下走。

2.4 注册洛谷账号

洛谷是刷题的平台,题单和提交都在上面。注册流程见群文件《洛谷使用指南》。

注册完先熟悉一下界面:题库和官方题单在首页左侧那一竖排图标里,点「题库」能看到全部题目,点「题单」能看到官方整理的题单。

我们的训练题单在这里,直接点开就行:

https://www.luogu.com.cn/training/597858

建议把这个页面收藏一下,之后每天都要从它进来。

看题和提交都用电脑上的浏览器,手机上看题很别扭,而且提交代码基本只能在电脑上做。

然后做一件事:找到 P1001 那道 A+B,做出来并提交一次。 这一步是为了把「写代码 → 本地测试 → 提交 → 看到 AC」整个流程走通,之后写题就都是重复这套动作。还不会输入输出的同学,先去看教程学会变量和输入输出,会读入两个数、会输出结果,再回来做这道题。群里还有一份写题提交的流程视频,卡住的时候可以对着看。

顺手提醒一句:输出只写题目要求的内容。P1001 让你输出两个数的和,就只输出那个数,别自己加一句「请输入两个数」。

提交之后能看到的结果有这么几种:

  • AC(Accepted):通过。所有测试点的输出都对,运行时间和内存也在限制之内。
  • WA(Wrong Answer):答案错误。代码语法没问题,也能跑起来,但输出和标准答案对不上,一般是逻辑写错了,或者思路本身有问题。
  • TLE(Time Limit Exceeded):运行超时。程序跑的时间超过了题目给的限制,还没跑出结果时间就到了。入门阶段最常见的原因是死循环,或者算法太慢。
  • MLE(Memory Limit Exceeded):内存超限。程序占的内存超过了题目限制,一般是数组开得太大,或者反复申请空间没释放。
  • RE(Runtime Error):运行错误。代码能编译成功,但运行到一半崩了,最常见的是数组越界。
  • CE(Compile Error):编译错误。代码有语法问题,根本编译不过去,也就谈不上运行。

看不懂报错就截图发群里。

三、C++ 基础

3.1 学到什么程度

这一阶段只需要掌握 C++ 的基础语法,范围是《深入浅出程序设计竞赛(基础篇)》的第 1 部分「语言入门」,具体见本文最后附的图。包含:

  • 输入输出、变量与数据类型、顺序结构
  • 分支结构(if)、循环结构(for / while)
  • 数组(一维、多维)
  • 字符串
  • 函数与结构体

指针、STL 更深入的用法、算法部分,都不在这一阶段的要求里,先别管。

判断标准有两条:

  • 上面范围内的代码,能自己独立写出来,看到一道基础题知道该用循环还是分支
  • 入门题单第一部分的大部分题目,能自己做出来

3.2 题单

题单链接:https://www.luogu.com.cn/training/597858

题单一共 100 题,分两部分,每部分 50 题。这届招新只要求第一部分,也就是在前 50 题里做出 30 题。群公告里有对题单两部分的说明,不清楚可以翻一下。

做的方式是边学边做。学完一个知识点,就把题单里对应的题做掉,不要先把视频刷完再回头做题,那样前面学的基本忘光了。

建议按顺序做,学到哪部分就练哪部分。碰到暂时卡住的题可以先标记跳过,之后回来补,别长期只挑会做的题。

3.3 学什么资源

视频

B 站上任意一个播放量高的 C++ 入门教程都能用,群里之前推荐的是「黑马程序员 C++」。跟着敲一遍,敲的过程比看更重要。

看视频注意两点:

  • 分清 C、C++、C#。要学的是 C++,搜的时候看清楚,别看着看着点进 C# 的教程去了。学了 C 也没关系,C 转 C++ 很快。
  • 大部分教程到后面都是教做项目,跟算法竞赛不是一条路。语法部分照常看,讲到项目那几章可以跳过。

章节按 3.1 里列的知识点挑,不用把整套教程从头看到尾,看完上面那几块就可以停了。

视频里一般推荐 Visual Studio(VS)作为编辑器。注意 VS 和 VSCode 是两个东西,算法竞赛里也不推荐用 VS,你用群文件《IDE 选择与配置教程》里装好的就行,想跟着视频再装一个 VS 也可以。

书

推荐的:

  • 洛谷《深入浅出程序设计竞赛(基础篇)》,高等教育出版社。最贴合算法竞赛的一本,洛谷官方题单跟这本书的内容一一对应,可以对着学。
  • 《零基础 C++ 从入门到精通》,广东人民出版社。
  • 《C++ 从入门到精通》,清华大学出版社。

不推荐的:

  • 学校发的程序设计课程教材
  • 图书馆里年代久远的编程书

这两类要么内容臃肿,要么跟现在的写法脱节。这个阶段优先用跟题单配套的材料,学起来最快。

浏览器搜索

这一条其实比上面两条都重要。不少同学高中基本没用过浏览器,进了大学最该练的就是「遇到问题知道去哪搜」。

能搜的东西很多:

  • 题解。洛谷题目页面右边有「题解」区,同一道题通常有十几篇不同写法。也可以直接搜题号加关键词。
  • 语法讲解。知乎、博客园、CSDN 上的教程,同一个知识点多看两三篇。
  • 菜鸟教程的 C++ 部分,查语法用。
  • OI Wiki,算法竞赛的知识库,从基础语法到高级算法都有。

搜出来的东西不一定对,现在 AI 生成的博客也很多。一篇看不懂就换一篇;几篇说法不一致时,先看各自的前提条件,再对着教材或者官方文档确认,最后用样例和边界数据试一遍。还是拿不准,就丢到群里问。

AI

这部分没什么要补充的,看群文件《如何正确使用 AI》就行。要点是:AI 可以给你讲概念、看你代码哪里有问题、给你思路提示,但它不保证正确;不能用它生成代码来做题单,更不能在比赛里用。

3.4 大概要多久

认真学的话,基础语法一到两周能过一遍,具体看每天能投入多少时间。剩下都是刷题的时间,不用赶。不要指望看一遍视频就会写,看完一个知识点就去题单里把对应的题做掉。

3.5 卡题了怎么办

做题先自己分析,卡住了再看资料、问 AI 或者在群里求助。安装、账号这类问题不用想那么多,直接在群里问。

  • 一道题想 15 到 20 分钟还没思路,可以去看题解。先看思路,看懂了自己写,直接抄代码没有意义。
  • 也可以把题目和自己的思路丢给 AI,让它给提示而不是直接给做法,具体怎么问看《如何正确使用 AI》。它给的方向要自己验证,别全信。
  • 代码调不出来、思路看不懂,把题目链接、你的代码、出错时的输入、预期输出和实际输出一起发群里。代码太长可以直接发文件,别直接刷屏。
  • 问的时候说清楚卡在哪一步:是不知道用什么方法,还是知道方法但写挂了。

3.6 关于大学课堂

开学后马上就会上程序设计课,之后还有数据结构。有件事最好早点明白:别指望课堂能教会你所有东西。上几周就懂了,进度慢、内容浅,讲的写法也未必跟得上现在的要求。这不是某个老师的问题,课程要照顾全班人的节奏,只能这么讲。

计算机这个专业,自学能力比听课重要。高中那种「老师讲什么就学什么」的模式,到了大学要尽快改掉。自己定目标、自己找资料、自己安排时间,这三件事不管加不加入实验室都得会。

四、进了实验室之后

这部分只是让你大概知道进来之后学什么,具体安排到时候会有学长讲。

训练节奏。 每周一次周讲加一场周赛。周讲把当周的知识点讲一遍,周赛是配套的练习,难度对标你当周学的内容。周赛打完要补题,没补等于没打。

学什么。 从基础算法开始,枚举、二分、贪心、递归递推、搜索、栈队列、并查集,之后是图论、动态规划、数据结构、数论、字符串,一路学到能参加区域赛。

平时自己练。 Codeforces 的 div3/div4,AtCoder 的 ABC,牛客的周赛,都是免费的。周讲之外的时间基本都是自己刷题,实验室不规定刷题量,但大家都盯着排行榜。

能打的比赛。 上半年有蓝桥杯、天梯赛,暑假有牛客多校,下半年是 ICPC/CCPC 的网络赛、邀请赛、省赛、区域赛。

实验室在哪。 东三 606,网安楼电梯到 6 楼出电梯右手边。想来看看随时来,来之前发个消息问一下有没有人在。

附:需要掌握的范围

只需要掌握下图 第 1 部分「语言入门」,第 1 章到第 7 章

file