一、引言
团队介绍
比赛介绍
XCPC
-
ICPC
ICPC(英文:International Collegiate Programming Contest,中文:国际大学生程序设计竞赛)由 ICPC 基金会(英文:ICPC Foundation)举办,是最具影响力的大学生计算机竞赛。由于以前 ACM 赞助这个竞赛,也有很多人习惯叫它 ACM 竞赛
官网网址:https://icpc.global -
CCPC
中国大学生程序设计竞赛。
官网网址:https://ccpc.io
赛制介绍
ICPC/ACM 赛制
一般是三个人组成一队使用一台机器,在比赛时有多次提交机会。比赛实时评测并返回结果,如果提交的结果错误会有 20 分钟的罚时,错误次数越多,加罚的时间也越长。每个题目只有在所有数据点全部正确后才能得到分数。比赛排名根据做题数来评判,做题数相同的,根据总用时来评判。总用时是每题用时的和。每题的用时是从比赛开始到做出该题的分钟数与该题的罚时之和。
一些 ICPC 相关赛事中,比赛结束前一小时进行封榜,封榜后的提交和排名将无法被其他选手看见。
在 ICPC 相关赛事中,选手允许带一定量的纸质资料。
赛季赛程
- ICPC/CCPC 省赛/邀请赛 (4 月底至 6 月初)
- ICPC/CCPC 网络赛(8 月底至 9 月初)
- ICPC/CCPC 区域赛(9 月底至 11 月底)
- ICPC EC Final/CCPC Final(12 月中旬)
- ICPC World Finals(次年 4 月至 6 月)
训练介绍
二、能力的四个阶段
阶段一:【蓄势待发】
推荐时间:一个月
目标:学会C++基础语法,能用代码表达自己的想法
可得奖项:铁牌
重点在知识的获取,需要听课/看书都可
听一个知识点,然后用刷题网站刷几道类似题,有些太难的题没有必要死磕,跳过就好,当然,这里也推荐 acwing 网课,就是有点小贵,知识付费是非常合理的
这个时候发生的程序报错大多数可以询问 ChatGPT 解决
总之,为之后学算法做辅助准备
写 Markdown 推荐,Typora,obsidian 等
博客推荐:知乎,博客园,csdn
编译器推荐:dev-c++
需要掌握:
- 学会使用 IDE
- 要保证能解决一切 CE 错误,能看懂代码为什么报错了
- 掌握如何写博客 markdown 语法,Latex,详见: 《Week0 Blog 对拍 Debug 复杂度.pdf》
- 掌握时间和空间复杂度的估算
- ACM中的基本错误,例如 WA,TLE,MLE,RE
- 掌握对拍的方法
- 有兴趣可以掌握一点点python
推荐书本:
- 《信息学奥赛一本通》- 董永建 的 第一部分,基础语法
推荐网课:
相关资料:
- 《零基础语法入门.pdf》
- 《零基础语法入门2.pdf》
- 《Week0 Blog 对拍 Debug 复杂度.pdf》
- 杭电100题 题解
刷题网站推荐:
阶段二:【初出茅庐】
推荐时间:三个月 ~ 一年
目标:掌握基础算法,背熟算法模板,有一定的思维能力
可得奖项:省赛/邀请赛 铜牌
这个阶段应该提升刷题的重要性,并且理解到程序是由算法模板和思维两部分组成的
对于 ICPC 来说算法模板是基础,思维是上层建筑,没有基础可以走的很快,但注定走不远
对于算法模板,需要掌握以下算法,当然也可以把相关的拓展了,这个时候就不得不拿出神图了
应该掌握 青色(入门),绿色(铜牌)的算法
那么如何学算法呢?还是一样,看课 + 看书 + 找大佬的博客看
比较推荐认准一本书,然后按照上面的知识框架,如果遇到看不懂的,再去找相关视频和文字,不建议一直看视频
看完视频之后,一定要理解算法思想,然后打开一个空的 cpp 自己敲一遍,之后去找相关题目,可以用洛谷的标签功能,也可以看我整理的提单,当然 VJudge 上有整理好的书后习题提单,也可以跟着做
此阶段学一个算法不宜过久,一周要过一个算法,一个算法学完后要刷 3-5 个相关题目,刷到什么程度算ok,就是把显示器关掉,能打出算法的核心代码
对于 STL 库,在此时也是需要掌握调用方法的,但是在此之前,强烈推荐用数组的方式把 stl 库都实现一次,排序也是同理
算法学累了可以练练思维,思维和算法应该是同步精进的
这里推荐两个网站,codeforse 和 atcoder,链接放在后面
这个阶段应该打 codeforse 的 (div4) (div3) 和 atcoder 的 Atcoder beginner contest 了,别觉得这两个网站是英文,打了之后有质的飞跃
codeforse 有利于增长思维,atcoder 有利于复习算法模板
刷题主要分为两方面,第一是跟着算法模板刷,第二是打网络赛
网络赛是在有限时间内解题,能提示我们的算法运用能力
除了上面提到的 codeforse 和 atcoder 的网络赛之外,国内的 牛客竞赛 的小白月赛也非常推荐打,并且都是在 B站有免费讲解的,B站 搜(牛客竞赛)即可
推荐书本:总体来说,国外的书读起来要有趣的多,但是相对来说速度要慢一点,我个人还是比较推荐国外的书的
-
《信息学奥赛一本通》- 董永建 的后面部分,这本书依旧非常经典
-
《挑战程序设计竞赛》这套书的 1 和 2 不是递进关系,感兴趣可以先看 2,然后挑 1 的某些章节看,对于此阶段来说,2 比 1 要重要点,国外的书启发性非常好
-
《算法竞赛进阶指南 (李煜东) 》这本书可以挑动态规划的章节看,理解非常深刻
配套资源仓库 -
《算法训练营》新出的一本书,非常生动形象的图解算法
-
《挑战编程:程序设计竞赛训练手册》- Steven S. SkienaMiguel A. Revilla
一个西班牙人写的,非常生动有趣 -
《算法竞赛从入门到进阶》(罗勇军, 郭卫斌)
经典黑书,但是本人不是很推荐,初学者容易读蒙,对自己比较自信且学习能力强追求速成的可以考虑黑书
推荐网课:不推荐全程都听网课不看书,因为网课会给人一种我懂了的感觉,而且网课经常有地方讲错,但书的错误很少,这里不推荐 acwing 的网课,原因qwq懂得都懂
- 董晓算法 一个算法模板和题目都讲的非常好的老师
- 锦城ACM官方号 夹带点私活qwq
- 成都信息工程大学的网课 学生讲的,有些讲的不错,有些讲不清楚
- 杭电刘春英老师
- 基础数论教程 小姐姐声音比较好听
推荐网站:
-
codeforces
CodeForce使用说明超详细!!!!!
使用油猴插件 codeforse better 可以翻译英文题面,用法自行百度 -
atcoder
AtCoder从小白到大神的进阶攻略
同理,使用油猴插件 atcoder better 可以翻译英文题面,用法自行百度 -
vjudge
简单的来说,vjudge 并不是一个独立的 oj,只是一个远程测评网站,好处是自带 GPT 翻译
Virtual Judge使用指南 -
oi-wiki
可以理解为一个算法字典,但非常非常不推荐通过这个学习算法
相关资料:
- 《【初出茅庐】算法入门阶段必做题 (动态更新ing).pdf》作者:Martian148 需要全部刷完
阶段三:【渐入佳境】
软件推荐:vscode + Ubuntu 系统
推荐时间:六个月 ~ \(\infty\)
目标:掌握某个领域的所有进阶算法,并且思维到了一定高度,cf1900,能自己指定学习计划
可得奖项:邀请赛金 / 区域赛银
这个阶段可以和队友分方向,也可以选自己感兴趣的领域,把这个领域的所有算法都掌握,然后每个知识点刷 1~3 道题,不需要刷到能默写的地步,因为 ICPC 能带板子,只需要做到知道用这个知识点,看着板子就能打出来
这个阶段也没有固定的训练方法,大体思路就是:
刷题 \(\rightarrow\) 补题 \(\rightarrow\) 查漏补缺找到不会的算法 \(\rightarrow\) 把算法学了 \(\rightarrow\) 找几道相关的题目再练练手
刷题的平台有很多,SPOJ,USACO,包括我前面提到的 cf 和 at,主要推荐如下:
- 历年区域赛题目,gym 上面有
- atcoder 的 arc 和 agc
- codeforse 的 (div2) (div1)
- 牛客的各种比赛,多校的质量很高,各个学校校赛,但是弱校校赛的弱智题和模拟题居多
- HDU 的题目质量和很高
- USACO,奶牛OJ,非常利于巩固算法,但是代码写起来比较繁杂
训练的方式可以很多,用网站的 vp 功能,或者再 vjudge 上面自己选难度合适的组题,限时训练
如果组题 cf 推荐自己的 rating + 300~400 的题目比较合适
也可以就顺着刷之前的比赛,倒着刷,从新往旧刷,看自己能不能在 30 分钟内想出思路,如果没有就去看题解,一定一定一定要独立思考,不要上来就看题解,如果题解中有自己没学过的算法,如果恰好是自己方向的就去学,如果不是选学
做题时小坑点都要记下来
网络赛后如何补题: 先给自己延一点时间,把来不及写的题写了,然后去看没有看题面的题,还是按照上面的思路,不要去看题解,要给足自己思考时间
晚上有空就冲 cf 和 at 网络赛,争取分数往 1900~2100 冲,周末可以和队友一起组队 vp 一场区域赛
赛后一定一定一定要记得补题,补题的重要性远远大于做新的题
可以对做过的题写题解并分类整理
可以看一些与算法没有直接相关,但是能给人很多启发的书,例如:《具体数学》,《博弈论》,数学和算法是分不开的
这个阶段要学会看大佬的博客,大佬往往会对算法有更深层次的理解
书籍推荐:
- 《算法导论》 经典中的经典,可以选章节选读,我想也没人想读整本书吧
- 《具体数学》 非常有意思的书,相信你读了就会爱上的
- 《程序员的数学2 概率统计》 日本人写的,也非常有趣
网课推荐:
阶段四:【登峰造极】
目标:对算法有一点的转化,并且能在考场上搞出点奇奇怪怪的算法
可得奖项:区域赛金牌,ec final银金,wrold final 入场券
由于本人没有到达这个水平,放点资料qwq
相关资料:
- 《集训队论文》
三、结语
先说点题外话
- 善用搜索引擎吧,有时候Google和百度搜出来的题解不一样
- 写写题解,整理个自己的模版,或者搭个自己博客,把写的东西呈现给别人看,还是蛮有意思的
- 别自欺欺人的拿天赋说事了,以绝大部分人努力程度之低,完全到不了拼天赋的地步。沉下心,踏踏实实的学,好好看书比干什么都来的现实,实验室的门为愿意学习的人永远敞开
- 只有自己足够强,才能和足够强的人组队,才能比赛拿牌,不要总想着抱队友大腿,自己变强比什么都来说明都来的好
- 训练累的时候,可以刷刷知乎,刷刷大佬博客,看看大佬回忆录,比赛游记什么的蛮有意思的,放松以下
Martian148 又是夹带私货
我们为什么要打 ICPC
这个问题一定一定要想清楚,其实对于现在来说,icpc对于没有零基础的选手性价比一年比一年低,随着oi日渐发展,区域赛拿奖的难度也在递增,如果想过于功利化的来打 icpc,说为了这个好工作,其实我本人是比较劝退的
大家可以看看这个问题:知乎 - 为什么要参加ICPC竞赛?
对于我个人来说,选择走这条路就这一点原因吧:
-
眼界,不出去走走不会不知道外面的世界有多大,这个圈子有着许多大佬,我通过比赛,认识了许多985,211高校的大佬,与他们交流对我帮助巨大,我也努力追寻他们的脚步。同时也不会盲目自大,觉得自己在 JC 前几就沾沾自得了,不盲目自大,对知识保持敬畏之心是 ICPC 教会我的,我也经常对自己说:
我虽之自己愚笨,不敌天才半分,但此生何其有幸,曾于天才同路而行
-
坚持,大学四年,不能虚度光阴,打算法竞赛总比在宿舍里面打游戏来的好,能找到两个志同道合的朋友,不断去学习新的知识,不断去突破自我,虽然比赛总打铁,但这些熬夜补题,写题解,打 cf 的经历,在日后想起来也是一段热血的经历,证明我们在大学依旧保持一股冲劲
-
自信,icpc 是计算机类的顶级赛事,像蓝桥杯等比赛,顶级高校都是不屑于参加的,但是 icpc 赛道云集了各路大佬,我高中竞赛老师经常和我们说这句话:
竞赛生有一种从骨子里面散发出来的傲气,有一种破釜沉舟的勇气,一种乘风破浪的精神,和一颗永远胜不骄败不馁的心
icpc 是一个没有任何强校天生优势的比赛,是绝对客观的,也让我们搏杀985,211等顶级强校学生的机会,证明自己高考考不过他们仅仅是其他原因,不是自己比他们笨,或者比他们懒,这样不爽嘛哈哈哈
讲了这么多,其实就一句话,打 icpc 挺有趣的,不是嘛qwq
总之,既然选择了走这条路,就静下心来,好好的把这条路走好,如果决定了不走这条路,也不要浪费大学是时光,去享受生活,或者去做其他有意义的事情,当然,人生也不止于算法竞赛
标签:竞赛,题解,推荐,地图,ACM,ICPC,算法,网课,锦城 From: https://www.cnblogs.com/martian148/p/18221024