当前位置: 首页 > news >正文

【打破信息差】萌新认识与入门算法竞赛

阅前须知

XCPC萌新互助进步群2️⃣:174495261

博客主页:resot (关注resot谢谢喵)

针对具体问题,应当进行具体分析;并无放之四海而皆准的方法可适用于所有人。本人尊重并支持每位学习者对最佳学习路径的自主选择。本篇所列训练方法,仅为本人综合实践经验提出的相对合理方案,供参考。

本文仅涉及帮助萌新快速理解算法竞赛的常识,对于训练方面仅涉及整体的大方向。

(上面那一段是gpt生成的)

这篇文章其实有很大程度是我想到什么写什么,如果这篇文章有错误或者是后面又想到了什么,东西多了会写第二版本(在这个版本的基础上更新)

算法竞赛的一些常见缩写/黑话

缩写全称(中文)简要说明
ACMAssociation for Computing Machinery(美国计算机协会)国际计算机领域最悠久的专业组织之一。早期 ICPC 以“ACM‑ICPC”冠名,因此“ACM”在华语社区常作为 ICPC 的口语简称。2018 年起 ICPC 独立运营,但“ACM”一词仍沿用。
ICPCInternational Collegiate Programming Contest(国际大学生程序设计竞赛)面向在校本科生/研究生的团队式编程竞赛,被视为大学阶段最高级别赛事。区域赛(Regional)、全球总决赛(World Finals)两级赛制,三人一队,共用一台电脑,五小时内解题。
CFCodeforces俄罗斯团队运营的在线评测与竞赛平台,以“Rating”体系闻名。常见赛事有 Round、Div.1/2/3、Educational Round 等,赛后可即时看到排名与官方题解。
AC / WA / TLE …Accepted / Wrong Answer / Time Limit Exceeded 等判题结果在线评测返回的常见状态码:AC 表示通过全部测试点;WA 输出错误;TLE 超时;MLE 超内存;RE 运行期错误;CE 编译错误等。
OJOnline Judge(在线评测系统)广义名词,指提供自动评测服务的平台,如 POJ、HDU、洛谷、AtCoder、Codeforces、LeetCode 等。
IOIInternational Olympiad in Informatics(国际信息学奥林匹克)中学生级别的全球顶尖信息学竞赛。各国通过本国选拔(如 NOI)确定代表队,个人赛制,两天各五小时,测试算法与实现能力。
NOINational Olympiad in Informatics(中国全国青少年信息学奥林匹克竞赛)中国 IOI 选拔体系核心赛事,面向高中生。成绩优秀者可晋级 NOI 集训队,再经多轮选拔产生 IOI 国家队。
黑话说明
apa批,泛指打算法竞赛的选手
xcpcicpc和ccpc的统称
封榜一些赛事会在比赛结束前一个小时封榜,即榜单会停滞在结束前一个小时的状态
滚榜因为封榜的存在所以大家无法直接得知最终排名,会在比赛结束后开滚榜环节,从后到前依次公布最终排名
vpvirtual participation,打一场在之前已经举办过的比赛
对拍一种程序,很多时候不确定自己写的符合时空复杂度的代码是否正确,但是可以写出来一个复杂度爆炸但是绝对正确的暴力代码,对拍程序可以实现生成若干随机数据,然后比较两个程序在随机数据下是否输出答案一致,常见于oi类比赛
hack有时候虽然写了错误代码,但是侥幸通过了所有测试点,但是其他选手可以自己造数据来让你的代码无法通过题目,同时也是cf的特性之一
fstfailed system testing,cf的大多数比赛在赛时只评测一小部分的测试点,在赛后会统一评测所有的测试点,所以会有赛时通过了题目赛后发现其实没过的情况,这就称为fst
spjspecial judge,题目的评测方式,例如有些题目必须输出 YES 才能判断为正确,而对于spj无论 YES yes yEs 等都可以判断为正确,如果题目是spj的话一般会在题目的输出格式中说明
ak表示这场比赛的所有题目全部拿到满分
rp++人品加一,用于表示祝福
bx拜谢
orz/or2orz看起来像一个人认输跪倒在地,or2的屁股更翘
tql太强了
%/膜膜拜

浅谈XCPC

icpc和ccpc

比赛流程

比赛流程(以2024年上海区域赛为例)

image-20250516230645065

不过最近开始出现热身赛和正式赛在同一天的情况了(以2025年南昌邀请赛为例)

image-20250516230809016

比赛规则

(以2025年南昌邀请赛为例)第二条根据参赛队伍数量的不同而不同,但是获奖比例固定不变

image-20250516230946077

image-20250516231008053

比赛场地

一般是体育馆,如果特殊情况(主办方经费不足/参赛人数过多)会考虑选择机房,如果遗憾在机房参赛也希望大家可以给主办方谅解,因为举办比赛是非常不容易的事情

比赛语言

自2023年南京区域赛首次选择中文题面后,大多数的icpc和ccpc竞赛都开始为选手提供中文题面(在这之前全英文题面),当然如果是海外供题的话还是会只有英文题面就是了

比赛赠品

一般主办学校会为所有选手(包括打星队伍)提供免费的餐券和赛时午饭,也会为选手提供伴手礼(质量跟报名费有关系)

主办方

实际上举办一场xcpc大概率是会亏本的,而且举办xcpc十分消耗人力物力,所以希望大家可以给主办方尽可能地谅解

赛时

一般一场比赛有13道题目,如果你是全场第一个AC一道题目的话还会额外获得首杀奖励

xcpc还是相对宽松的,你可以带任意的书籍和纸质资料(当然电子类的资料是肯定不行的),也可以自己带饭零食什么的

在赛时因为是三个人只有一台机子,所以你可以选择先让志愿者帮忙打印出来代码去一旁想题

赛制

oi赛制

只能提交一次,赛后自动提交代价,可以获得部分分(即一道题满分一百,可以获得十分二十分的部分分),赛时无排名

应用比赛:csp-j/s,noi,蓝桥杯

acm赛制

可以无限次提交,以最后一次提交为准,但是每道题要么零分要么满分,无部分分得分,赛时有排名,如果得分相同,会根据罚时来进行升序排序。不过具体情况具体分析,例如codeforces中,每次提交错误/重复提交会扣掉一定的分数;在xcpc赛事中,每次提交错误会增加20分钟的罚时

应用比赛:icpc,ccpc,百度之星

ioi赛制

可以无限次提交,并且可以获得部分分,多次提交并不会有任何惩罚,分数以最后一次提交/最高分最准,最舒服的一个赛制

应用比赛:ioi,睿抗,天梯赛

多校

一般是指牛客多校和杭电多校

牛客多校

牛客暑期多校是面向准备参加ICPC/CCPC等算法竞赛选手的暑期训练营。内容包括10场线上比赛,赛后直播讲题以及社群交流学习。历年出题人包括NOI、IOI、ICPC world final 等顶级赛事的金牌选手。 旨在通过比赛、讲解、交流来提升同学们的编程能力,为下半年的比赛备战。并促进各高校集训队之间的学习和交流。

具体可看2025年暑假多校比赛页面:2025牛客暑期多校训练营1

另外因为之前多校有很多英文题,推荐使用这个插件来进行翻译:Nowcoder Better

杭电多校

杭电多校是杭州电子科技大学在杭电oj举办的多校联赛,不过我没打过杭电多校,具体可以直接去官网看看:https://acm.hdu.edu.cn/

正式队/打星队

正式队就是普通参赛队伍,在得到一定名次后可以获得对应的奖项

打星队比较特殊,简单来说是只参加比赛不参与评奖,所以可以让中小学生参与xcpc,或者是社会人士,或者跨校组队

正式队员的要求如下(以2024年ICPC杭州站为例)

image-20250516224718065

省赛/邀请赛/区域赛

从含金量上说一般省赛 < 邀请赛 <<< 区域赛

当然也有例外,比如北京省赛的难度就非常非常高,含金量也会相应提高

省赛

名额一般是一个学校最高10/7个,几乎是点击就有,并且只能本省高校可以正是参赛,其余省份只能打星参与

如果省赛举办学校举办区域赛的话,也许会根据省赛成绩发放区域赛名额

邀请赛

全国高校都可以正式参赛,但是名额分配需要根据主办方的不同分配方式也不同,例如2025年西安邀请赛名额全根据报名顺序来发送,2025年南昌邀请赛会优先每学校至少一个名额来发送

因为想要参赛的队伍数量是远远超出赛场的容量的,所以名额非常宝贵

如果邀请赛赛举办学校举办区域赛的话,也许会根据省赛成绩发放区域赛名额

区域赛

区域赛之前会有网络赛,网路赛的成绩与名额关联度非常高,一般是icpc两场网络赛,ccpc一场网络赛。事实上网络赛打出来名额要比区域赛获奖难

这也是绝大多数选手最关键的比赛,大家说的acm金银铜牌/xcpc金银铜牌一般是默认说的是区域赛

名额分配

(以2024年上海站为例)

image-20250516225658760

报名流程

(以2024年ICPC杭州站为例)

image-20250516224759586

外卡

如果很遗憾网络赛失利,但这并不意味着你完全与区域赛无缘,一般来说每个主办方会有一些额外名额,这个额外名额就是外卡,如果你的理由能够足够打动主办方是可以获得外卡的。值得一提的是,如果是学校首次参加ccpc,那么大概率会获得一个ccpc区域赛外卡

竞赛相关网站

网站简介
codeforces.com/contests全球最活跃的算法竞赛平台 Codeforces 的比赛入口,实时榜单与互动社区一站齐全,简称cf。
cftracker.netlify.app/contestsCodeforces 已经举办过的比赛可视化追踪器,可以直观地看到自己做过哪些题与题目对应的难度。
luogu.com.cn国内大型 OI/XCPC 社区与题库,支持同步多平台题目与刷题统计,配有高质量文章区。
atcoder.jp/contests日本 AtCoder 官方比赛列表,每周六/日会有ABC, ARC等。
kenkoooo.com/atcoder#/tableAtCoder 题目难度与个人进度可视化工具,可以直观地看到自己做过哪些题与题目对应的难度。
oj.daimayuan.top/courses代码源 OJ 的系统化课程+评测,适合配套课程学习。
ac.nowcoder.com/acm/contest/vip-index牛客网竞赛中心,提供每周有周赛/月赛/练习赛/挑战赛,假期会有寒假训练营与暑假多校。
qoj.acQOJ 在线评测平台,汇集多校训练题与自定义题单,支持 SPJ。
ucup.ac/zhUOJ 团队新平台 Ucup,很多XCPC的比赛都可以在这里参加。
leetcode.cn力扣中国站,面向面试算法题练习与周赛活动的主流平台。
vjudge.netVJudge 虚拟判题系统,一站式提交多 OJ 题并可自建比赛,题库非常全。
acm.hdu.edu.cn杭电 OJ,老牌中文评测系统,题量丰富且经典,假期里会有杭电多校。
clist.byClist 全网竞赛日历,集中查看各大 OJ 比赛时间并可设置提醒,也可以用于查看比赛题目的难度。
oiwiki.orgOI Wiki 知识库,整理算法与数据结构入门到提高的中文资料。
icpc.globalICPC 国际大学生程序设计竞赛官网,用于报名ICPC的比赛。
acmer.infoACMer Info 聚合站,提供算法竞赛相关的信息与推荐群聊。

代码工具

实际上算法竞赛中对工具的要求极低,甚至一些网页的代码运行都足够了

小熊猫dev C++

如果是刚刚入门的选手那么我推荐你安装个小熊猫dev C++就够了,因为它的安装与运行十分简单

下载链接:小熊猫dev C++

下载完成后点击安装,所有过程无脑下一步即可

image-20250515120934544

这里可以进行主题设置,我这里改了个自己喜欢的字体

安装完成后使用 ctrl + n 新建文件

写好代码后按 F11 便可以实现编译运行代码

image-20250515121237699

vscode

如果你觉得dev已经无法满足你了,你需要更方便的插件/功能,你可以考虑vscode,具体教程可以见我之前的文章

【竞赛工具】——vscode xcpc竞赛向配置教程

sublime text4

sublime同样是轻量级的代码编辑器,并且也可以安装很多实用的插件,具体教程可以见我之前的文章

【竞赛工具】——sublime text4 xcpc竞赛向配置教程

clion

这个是我自己一直在用的IDE,现在好像也可以免费使用了,不过比较重量级,打开ide和运行代码要费一些时间,其他很完美,可以直接在官网下载

https://www.jetbrains.com/clion/

推荐的训练方法

总结为一句话:大量的去刷难度略高于自己能力的题目

刷题

下面会有非常详细的cf应用教程,当然还有牛客洛谷等网站也非常推荐去做题,不过现在时间有限(明天要去外地打比赛)就先只写cf的应用教程(因为是英文网站所以比较难懂,而牛客洛谷等主语言就是中文就非常友好),当然还有atcoder,这里由于时间原因也先暂时不写(如果有第二版的话会补上)

codeforces的题目偏向于思维,atcoder的题目偏向于典题,我个人是觉得刚入门的话只需要做到大量刷题即可,最好的话是去刷高于自己当前最大rating + 300难度的题目

非常推荐使用cftracker和atcoder problems这两个东西来做题

image-20250516223056073

image-20250516223116593

关于做自己最高分数+300的题目可以这样

image-20250516223258362

codeforces

推荐插件:codeforces better

另外还有carrot,这个插件要在chrome的应用商店下载,这个插件可以赛时查看自己的表现分(自己当时的排名对标cf的多少rating)

image-20250516205552937

接下来说明下codeforces最常用的几个情况,这里挑最关键的几个讲

home

image-20250516210137302

contests

image-20250516210511486

这里额外说一点,cf常见的比赛分为div1,div2,div3,div4, edu

类别计分区域备注
div11900+难度最高,一般A题是div2的C题
div2如果同时举办div1: [0, 1900),如果单独举办div2:[0, 2100)最常举办的比赛
div3[0, 1600)
div4[0, 1400)最简单的比赛
edu[0, 2100),一般对标div2会出很多典题,比较教育选手
div1 + div2all
contest

随意点进一个比赛中,这里也有很多页面,我们挨个儿说

image-20250516212816310

image-20250516212948658

image-20250516213121685

image-20250516213144897

image-20250516214332523

image-20250516213926794

image-20250516214238919

image-20250516214412171

gym

很多xcpc类的比赛可以在cf上vp,也就是在gym上找到相应的比赛去做

image-20250516214504725

关于xcpc比赛还有牛客,洛谷,qoj,uccup等网站都会有比赛,因为有些比赛只会出现在某一个平台,想vp的话可以直接问群友在哪

problems

板刷cf一般就是指从这里筛选难度区间后开始刷题

image-20250516220318911

随意点进一个题目的页面是这样的

image-20250516223520190

个人主页

image-20250516220659991

顺带讲一下cf的颜色分段

分段段位颜色
[0, 1200)newbie灰名
[1200, 1400)pupil绿名
[1400, 1600)specialist青名
[1600, 1900)expert蓝名
[1900, 2100)candidate master紫名
[2100, 2300)master橙名
[2300, 2400)international master黄名
[2400, 2600)grandmaster红名
[2600, 3000)international grandmaster红名
[3000, 4000)legendary grandmaster黑红
4000+jiangly/tourist (以你的id命名!)红黑

学习算法

算法学习我其实觉得在刚接触算法竞赛的时候不需要急着学算法,这个阶段说不定会学到一大堆useless的算法,我觉得应该先大量刷题把算法思维训练出来,差不多cf1600分的时候在学习算法效率会非常高

还有个名言: Stop learning useless algorithms, go and solve some problems, learn how to use binary search.(停止学习用不到的算法,去刷题,学习怎么用二分)——Um_nik

这里我推荐牛客的网课,牛客的算法课程质量是很高的。另外还有代码源的课程,遗憾的是代码源的课程已经下架买不到了

此外学习算法也不一定必须看课,看上几篇博客再刷上几道题也是完全没问题的,可以在洛谷的题单中去搜索自己学习的算法,然后去刷题

刷题是非常重要的,一定要刷题!一定要刷题!一定要刷题!

学会交际

算法竞赛的圈子其实很小,很多时候都是一群相同的人在不同群里聊天

在算法竞赛中交际非常重要,自己写一道题可能要研究两三天(其实并不算罕见现象),而去向群友请教的话有可能一句话就能让你开悟理解这道题的思想

也可以喊上几个人一起vp,比自己单独vp会更有意思

结尾

现在时间2025/5/16 23:45,明天还要赶飞机去打南昌站,就先写这些,也许打完南昌回来会想到更多东西再开个第二版本

同时感谢萌新群的群友,有很多东西找群友讨灵感才有方向的,在此拜谢了or2

相关文章:

  • QBasic 一款古老的编程语言在现代学习中的价值(附程序)
  • 刷leetcodehot100返航版--双指针5/16
  • 西安前端面试
  • 机器学习中的特征工程:解锁模型性能的关键
  • 计算机组成原理——数据的表示
  • 代码随想录 算法训练 Day3:链表1
  • 隧道结构安全在线监测系统解决方案
  • 从裸机开发到实时操作系统:FreeRTOS详解与实战指南
  • 英飞凌TLE9945GPT12
  • SSH主机密钥验证失败:全面解决方案与技术手册
  • 【言语】刷题5(填空)
  • MySQL数据库——支持远程IP访问的设置方法总结
  • 【RabbitMQ】消息丢失问题排查与解决
  • 将单链表反转【数据结构练习题】
  • (for 循环) VS (LINQ) 性能比拼 ——c#
  • 半导体供应链B2B集成时应该注意的要点
  • vue3中预览Excel文件
  • Spring三级缓存的作用与原理详解
  • 【每天一个知识点】意图传播(Intent Propagation)
  • 单例模式深度解析:从原理到高阶应用实践
  • 新任重庆市垫江县委副书记刘振已任县政府党组书记
  • 下辖各区密集“联手”,南京在下一盘什么样的棋?
  • 特朗普指控FBI前局长“暗示刺杀总统”,“8647”藏着什么玄机?
  • 篮球培训机构东方启明星被指停摆,家长称已登记未退费用超百万
  • 长三角体育节回归“上海时间”,首次发布赛事旅游推荐线路
  • 习近平就乌拉圭前总统穆希卡逝世向乌拉圭总统奥尔西致唁电