SDUTACM 不完全手册
来到了 SDUT ,如果想要成为一名 ACMer 大致需要以下三个步骤
- 准备阶段
- 选拔(入学后11月左右)
- 开始训练!!
如果你能看懂下面这段伪代码,恭喜你已经掌握了程序设计的三种基本结构
do{
学习基础知识
}while(OJ 过题数 < 150);
if(选拔通过)
{
while(1)
{
开始训练!!;
}
}
关于 ACM 的不冷不热的知识
- 我们参加的其实并不是 ACM。ACM 只是“美国计算机协会”的名字。这么叫的原因是从前 ACM 赞助了 ICPC 比赛,所以这个比赛在国内也被称为 ACM ,但后来 ACM 停止了赞助,这个名称也就留了下来,毕竟叫自己 XCPCer 挺奇怪的。
- XCPC 是一类比赛的统称,如 ICPC(国际大学生程序设计竞赛),CCPC(中国大学生程序设计竞赛),GCPC(Ginger大学生程序设计竞赛,SDUT校赛)
- ACM 里会有一部分高中接触过 NOIP 竞赛的同学,这类同学被尊称为“OI 爷”。
- 在备赛训练时经常使用的一些在线测评平台,一般称为 Oline Judge,简称 OJ。
- 正常的 XCPC 类比赛均是英文题目,不能使用电子词典等工具,比赛允许携带纸质材料,因此只能使用纸质词典。
- XCPC 类比赛分为三个奖项:金 银 铜。拿到金牌会被称为“金牌爷”,如果很遗憾没有拿到金银铜中的任何一个,则称为“打铁”。
- XCPC 类比赛是三人组队参加,除了提高自身能力以外和队友配合默契也是必不可少的
- XCPC 类比赛排名以过题数为第一关键字降序排列,以罚时为第二关键字升序排列(过题数多排名靠前,相同过题数罚时少排名靠前)。罚时即 $题目通过的相对时间+题目错误提交次数\times20=题目罚时$,最后对所有通过题目的罚时进行求和,即为队伍本场比赛总罚时。
- 在比赛及 OJ 中提交题目会有相应反馈,出现错误后需要排查自己代码中的 bug(s),常见的反馈如下:
- Accept(AC) 题目通过
- Wrong Answer(WA) 答案错误
- Run Time Error(RTE) 运行时错误/段错误
- Time Limit Exceeded(TLE) 超出运行时间
- Compile Error(CE) 编译失败,存在语法错误
- 比赛结束后一定要查题解,重新解出比赛中没有做出的题。补题的原则是:补比自己能力高一点的题目,组队赛中队友做出来自己没做出来的题目。补题的过程是学习新算法提高自己能力的重要过程
- SDUTACM 的口号是:宁拙毋巧,功不唐捐。
竞赛常用资源
常用的网上资源
- SDUT OJ | 学校的在线测评平台
- 选拔赛的报名及部分课程实验会使用。
- PTA & OMS 拼题A | 监考系统
- 部分课程实验以及上机考试的科目会使用该平台,同时天梯赛的练习题目也在该平台。
- AcWing
- 大部分同学在使用的算法学习网站,有《算法竞赛进阶指南》(李煜东著)配套题目。站长 yxc 有自己录制的算法教程(需付费)。
- 牛客网
- 比赛较多,部分学校校赛以及 ICPC/CCPC 的比赛可能会选择该平台,同时也有月赛等常规比赛可以参加。
- 洛谷
- OI爷使用的较多。
- Codeforces
- 毛子的网站,也是 ACM 选手最常用的比赛网站,题目偏思维,同时 Rating 也可以客观的反应自己的水平。
- AtCoder
- 小日子最近过得不太平的日本人的网站,也会有定期比赛,英文题目。
- Virtual Judge
- 日常训练赛使用平台,可以自行选题组织比赛,支持向多个 OJ 提交代码
- OI Wiki
- 在线的 OI 百科,OI 中的知识点基本都有涉及
- 打字酷酷网
- 练习打字的网站,大一第一学期刷题的同时需要练习打字(英文文章),提高打字速度以及准确度对写代码很重要。
- 各种博客网站,如 CSDN、博客园
- 主要用于查找题目题解以及学习新算法
- 善用搜索引擎
- 百度、Bing 或者是 Google,学会使用搜索引擎找到自己想要的答案是一项重要技能
常用的书籍资料
- 《算法竞赛入门经典》(刘汝佳著)
- 包含基础的语法内容和部分算法,可用作入门及后续数据结构与算法的学习参考
- 《算法竞赛进阶指南》(李煜东著)
- 包含一些高级算法及数据结构,有一定算法基础后可以使用(配合AcWing提交题目)
- 《C Primer Plus》/《C++ Primer Plus》
- 对 C/C++ 语言介绍更为详细,可作为学习语言的参考,后期对竞赛影响不大
- 《牛津词典》
- 正式比赛中用来查单词
准备阶段
参加第一次选拔的门槛是完成 SDUTOJ 上 150 道程序设计基础 I 的实验题,你需要在十一月份选拔赛之前达成这个目标。
过程中不要投机取巧,复制粘贴别人的代码并不会提高你的能力,150 是参加选拔的门槛,也是对你能力的保证,没有足够的题目量检验学习,在选拔赛中也不会占有优势的。
在 OJ 中有很多类似的题目,做过一次就不想再做了是大忌,一套模板反复练是学习的常态,熟能生巧,这样才能更好的理解代码,才能在比赛中将其运用在对应的题目上。
选拔除了考察过题数,同时会进行打字速度测试,打字训练通过 打字酷酷网 进行,内容为盲打+英文文章,目的在于提高自己的码字速度及准确率,这也是一名合格程序员的基本功。最终考核要求为:达到良好及以上+100%正确率。
程设 I 的主要知识点如下,根据 SDUTOJ 题目集顺序学习即可:
- 顺序结构
- 选择结构(if-else & switch)
- 循环结构(while & for)
- 数组(一维数组 & 二维数组)
- 函数
- 指针
- 字符串
选拔
往年选拔赛重现在 SDUTOJ 的 Contest 菜单中有重现比赛可以提交。
第一学年会进行两次选拔,通常在入学后的11到12月,因此第一次选拔落选不要灰心,可以继续准备第二次选拔。
通过第一次选拔后可以在 501 参加秋季集训,集训内容是 程序设计基础 II 的授课内容,实验难度会有所提高。
第二次选拔通过后就可以参加冬季集训了!届时视学校政策会以线上或线下的形式开展。
如果能够通过冬季集训后的第三次选拔,你就有机会来到 504 体验独属于实验室的“山川湖海,风花雪月”(仅仅字面意思而已,真的只是字面意思)。
下面列举了几次选拔赛的题单,学习上述知识点后可以尝试对自己进行检测
SDUTACM 2016年第一次选拔赛
SDUTACM 2018年第一次选拔赛
SDUTACM 2019年第一次选拔赛
SDUTACM 2021年第一次选拔赛
22级第一次选拔赛重现赛
22级新生争霸赛重现赛
21级新生争霸赛重现赛
数据补充:By PQY
开始训练
SDUTACM 一年分为四个训练周期(春夏秋冬),每个训练周期开始及结束时均会组织比赛用于检验学习成果。
春季及秋季训练为了兼顾学业课程,训练时间为每周一到周六 19:00-21:30(上不封顶,但是你要在宿舍锁门之前回去)。
冬季及夏季训练均在假期中进行,时间与正常在校作息相似,期间穿插大量训练赛。
如果你在十一月份前认真的完成了 150 题,其实你的训练生活已经开始了!训练生活大概会经历:新鲜感 – 努力学习新知识 – 做题做题做题 – 有些疲倦懈怠 – 重新找到适合自己的训练节奏。对着电脑敲代码的日子听上去会有些无聊,不断从 WA 到 AC 的过程不也正像我们的生活吗,不断学习、思考、优化,找到属于自己的最优解。
最后:
同学你好,欢迎加入 SDUTACM !