Atcoder 和 Codeforces 入门指南
前言
Codeforces是全球最著名的在线评测系统之一,这里有高水平的选手,高质量的题目,高密度的比赛。该网站由俄罗斯的一个团体创立并负责运营,大部分博客、评论、题面都是英语的。
AtCoder是日本最大的算法竞技平台,也是全球第二大编程竞赛网站,自2012年创立以来,吸引了来自全球的编程爱好者。其特色在于高频比赛以及梯度化题目设计,覆盖从零基础到国际竞赛水平的全阶段用户群体。平台支持日语和英语界面,提供在线比赛、历史题目复现、代码评测等服务。
翻译的问题:下文中给出了翻译插件,但是机器翻译可能会扭曲题意,一切需要以原文为准,所以建议学好英语。
访问速度的问题:由于服务器在国外,国内访问速度不是很理想这是正常情况,多等等就行。
Atcoder
AtCoder是一个由日本公司运营的知名编程竞赛平台,于2012年6月20日正式创立,域名为 https://atcoder.jp/。它为程序员提供了各种算法和编程问题,是学习训练编程能力、展示编程实力的优质平台,特别适合对算法和数据结构感兴趣的人。
- 平台特点:
- 题目质量高:题目难度覆盖从入门到高阶,特别适合强化基础和巩固数据结构与算法知识。
- 赛题资源丰富:平台拥有大量经典比赛题目,且大部分题目有详细的题解和视频分析,有助于参赛者理解题目和总结解题思路。
- 定期举办比赛:会定期举办不同类型的比赛,难度渐进,能帮助参赛者逐步提升能力,积累实战经验。
- 支持语言:主要支持C++、Java、Python等语言,题目以日英双语呈现,用户可在网站右上角切换语言。
- 比赛类型:
- 常规算法比赛:
AtCoder Beginner Contest(ABC)、AtCoder Regular Contest(ARC)、AtCoder Grand Contest(AGC)是AtCoder平台上的三种主要比赛类型,以下是详细介绍: - AtCoder Beginner Contest(ABC):
- 比赛频次:每周一次,通常在周六 20:00。
- 题目设置:目前比赛共6道题目,赛题按照洛谷的难度评级约为红题~蓝题,适合初学者。题目难度通常由字母标识,从A到F,字母越靠前,问题越简单。初级阶段的选手建议进行大量ABC的A-C题练习。
- 比赛时长:时长为100分钟。
- 分值设定:满分2100分。
- Rating相关:Rating值超过1999的选手不计Rating值。
- AtCoder Regular Contest(ARC):
- 比赛频次:每月 1-2 次。
- 题目设置:一般有4道题目,赛题按照洛谷的难度评级约为黄题~紫题,难度中等。ABC的C、D题与ARC前两题相同,因此ARC赛题通常编号为CF,ABC编号AD。
- 比赛时长:通常为120分钟。
- 分值设定:满分2100至2700不等。
- Rating相关:参赛选手Rating范围一般在1200至2799之间。
- AtCoder Grand Contest(AGC):
- 比赛频次:每月 1 次。
- 题目设置:通常有6道题目,难度较高,赛题难度一般在R1200-R1900-R2200-R2500-R3000-R3300。
- 比赛时长:时长不固定,常见为110分钟至180分钟不等。
- 分值设定:通常总分5600分。
- Rating相关:所有选手均计Rating值。
这三种比赛通常都在北京时间每周六或周日20时左右举行。比赛题目一般不设部分分,AC则得全分,否则每次失败提交会罚时5分钟,最终排名以得分倒序统计,得分相同时按时间升序统计。
- 启发式竞赛(AHC):这是AtCoder举办的知名编程比赛之一,每年约举行10-18场,截至2025年5月1日,已累计举办了49场正式比赛。每场比赛平均吸引约1000名参赛者,题目贴近实际,涵盖路径规划、任务调度、多智能体控制等多个领域,支持长期赛和可视化工具等特色。
- 功能模块:
- 个人主页:参赛者可以查看个人信息和排名,了解自己在平台上的表现和与其他选手的差距。
- 练习模式:提供永久性的练习比赛,不计分不排名,适合新手熟悉评测系统和练习编程技能。
- 公告栏:比赛开始前一天,网站管理员会发布比赛公告,对比赛进行宣传,方便参赛者了解比赛相关信息。
- 评分系统:AtCoder的Rating计算系统基于改进的Elo算法。新用户有初始Rating值,随着参赛次数增加,Rating会根据比赛表现逐渐调整,且不同比赛类型(AGC/ARC/ABC)采用独立的Rating体系。参加约10场Rated比赛后,Rating会趋于稳定,反映参赛者的真实水平。
注册账号
AtCoder账号注册过程较为简单,以下是具体步骤:
- 进入官网:打开浏览器,搜索或点击 AtCoder官方网站。
- 点击注册按钮:在官网页面右上角,找到“Sign up”按钮并点击,进入注册界面。
- 填写注册信息:根据页面提示,依次填写相关信息,包括用户名、邮箱、密码、再次输入密码、国籍等,其中生日和描述或住址为选填项。
- 勾选同意条款:填写完信息后,需勾选页面下方的方框,表示同意相关条款和规定。
- 完成注册:确认填写的信息无误后,再次点击“Sign up”按钮,即可完成账号注册。
注册完成后,请务必记住自己的账号、密码和邮箱,以便后续登录和使用。 - 登录:点击 “sign In”,输入自己的账号和密码登录即可。
参加比赛
初学者建议参加ABC,每周六晚上20:00-21:40 会有一场比赛。
如果没有即时参与,可以赛后VP。
题解,赛后补题(非常重要)
在赛时或许因为时间,心态等原因我们无法获得满意的分数,那么在赛后即时补题,通过补题巩固自身不足、学习新的知识,掌握不同的解题模型,就显得非常重要了。
题解一般有如下渠道获取:
-
官方题解
-
别人的提交代码
-
网络笔记:知乎、cnblogs, csdn 等很多人会发布自己的题解,搜索比赛名即可
-
视频题解:很多人会在BiliBili发布视频题解
Codeforces
Codeforces是一个全球知名的在线编程竞赛平台,域名为 https://codeforces.com/。由俄罗斯科学家Mikhail Mirzayanov于2010年创立,由萨拉托夫国立大学的一个团体负责运营。
- 平台特点:
- 竞赛形式多样:提供个人赛、团队赛和公开赛等多种类型。个人赛要求选手独立完成题目,团队赛则需成员协作,公开赛面向所有用户,不限参赛次数。
- 题目难度丰富:题目难度较高,涵盖入门到专家级,涉及贪心算法、动态规划、图论等多个算法领域,适合不同水平参赛者挑战。
- 积分排名系统:采用基于Elo积分的排名制度,根据比赛表现评分,赋予选手不同头衔,如Expert、Master等,名字也会以不同颜色显示。初始评级默认为1500,每场比赛后评级会根据赛前评级、赛后排名和比赛结果调整。
- 社区互动活跃:拥有活跃社区,用户可查看他人解决方案,互相学习交流。还提供博客系统,用户能分享算法心得和竞赛经验,也可通过论坛讨论编程技巧、算法问题等。
- 竞赛模式:比赛通常为1.5至2小时,包含多个阶段,对应不同难度题目。结束后,选手可查看其他选手代码,通过分析代码发现bug还可获得额外分数。
- 技术优势:
- 实时评分:系统能在几秒内完成代码编译、测试并给出结果,得益于高效自动化测试框架。
- 分布式系统:采用分布式计算和存储解决方案,可应对大量并发用户提交,确保稳定性和性能。
- 动态数据结构:数据库设计优化,使用动态数据结构,支持竞赛信息的快速查询和更新。
- 应用场景:
- 提升编程能力:定期参与竞赛可在实战中学习新算法和数据结构,提高解决问题的能力。
- 算法实践:通过解决竞赛中的各种算法问题,加深对算法的理解和应用。
- 代码分享与学习:查看他人解决方案,借鉴优秀设计思路和代码风格,促进自身成长。
- 求职准备:许多公司会关注Codeforces上的排名,是程序员展示实力的好平台。
- 教育工具:教师可利用平台组织课堂竞赛,激发学生学习兴趣。
- 语言支持:支持C++、Java、Python等多种编程语言,满足不同编程习惯。
截至2018年,Codeforces注册用户已超过600,000人,吸引了Gennady Korotkevich、Petr Mitrichev等众多顶级算法竞赛选手参与,在全球编程社区具有广泛影响力。
注册账号
Codeforces注册账号步骤较为简单,以下是具体操作教程:
- 进入官网:打开浏览器,访问Codeforces官方网站。
- 点击注册按钮:在官网页面右上角,找到“register”按钮并点击,进入注册界面。
- 填写注册信息:在注册界面,依次填写“Handle”(昵称、用户名,注册7天后可更改)、“Email”(邮箱,可使用QQ邮箱、163邮箱等)、“Password”(密码,需设置符合强度要求的密码)、“Confirm Password”(再次输入密码以确认)。
- 完成注册:填写完信息后,点击下方的“register”按钮。此时,Codeforces会向你填写的邮箱发送一封验证邮件。
- 验证邮箱:登录注册时使用的邮箱,找到Codeforces发送的邮件,打开邮件后,点击其中的验证链接。点击链接后,页面会自动跳转到Codeforces官网,若看到右下角显示“Your email successfully confirmed”,则表示邮箱认证成功,账号注册完成。
注册完成后,请务必记住自己的账号、密码和邮箱,以便后续登录和使用。
其参赛流程、赛后补题和AtCoder 类似,就不在赘述。
翻译插件
AtCoder和Codeforces常用的翻译插件有AtCoder Better和Codeforces Better,它们需要配合用户脚本管理器使用,通常推荐Tampermonkey。以下是具体安装方法:
-
AtCoder Better:以Microsoft Edge浏览器为例,点击右上角的三个点,选择“拓展”,接着点击“获取Microsoft Edge拓展”,在拓展商店中搜索Tampermonkey(或者篡改候)并安装。安装完成后,可在右上角扩展中找到该扩展,点击进入,搜索AtCoder Better脚本并安装。随后刷新AtCoder页面,即可看到部分UI变成中文,并且具备翻译功能,还可在设置里将翻译引擎设置等,具体如下图。
-
Codeforces Better:安装与使用方法同上。
-
通用翻译插件(推荐):使用中有时候Better可能会无法使用,这里提供一个较为简单稳定的翻译插件。在浏览器-扩展中搜索 “翻译”,找到 “沉浸式翻译”,安装后刷新网页页面,则在右侧就会出现翻译按钮,点击翻译即可。
翻译插件无法使用的部分原因
- 未打开浏览器的开发人员模式:点击浏览器的右上角“扩展”,打开“开发人员模式”后,重新刷新页面。