Codeforces游玩攻略

2018-07-24 14:51:02


$\color{red}\text{为了保护隐私,修改了部分图片}$


1. 简介

Codeforces是全球最著名的在线评测系统之一,这里有高水平的选手,高质量的题目,高密度的比赛。该网站由俄罗斯的一个团体创立并负责运营。当然,该网站上大部分博客、评论、题面都是英语的。


2. 网址

Codeforces在线评测系统的网站为www.codeforces.com。现在,您可以在浏览器中输入该网址或单击左侧链接进入Codeforces在线评测系统。


3. 使用

1. 主界面

我们首先了解一下顶部菜单栏的功能:

名称 功能
HOME 返回主页
TOP 最近更新的文章
CONTESTS 所有比赛
GYM 一些非官方的比赛
PROBLEMSET 题库
RATING 用户比赛积分排名
API 一些接口函数

剩下的几个是定期的活动。

在整个网站的右上角是登录和注册按钮,若您没有账号,则建议您先注册账号,再阅读剩下的部分,注意注册账号时的验证码需要科学上网才能显示。

登录完成后,我们看到网站变成了这样:其实没变多少

侧边栏的内容依次为:即将举行的比赛、用户个人信息(注意若您没有参加过计分的比赛,则不显示Rating这一行)、比赛积分最高的前十个用户等等。

而占主页最大位置的是重要的置顶文章,这些文章通常是比赛预告、网站重大更新的通知等。

2. 社区

通过以下几种方式,您可以查看文章:

(1) 单击首页置顶文章或者TOP菜单中的文章的标题

(2) 直接输入网址

(3) 通过侧边栏最后的"Recent actions"

(4) 其它您想得到的方式

打开文章后,界面是这样的:

细心的读者可能发现了,文章最底部以及评论右侧均有一个绿色的正三角与红色的倒三角,这就是Codeforces的“赞”和“踩”功能,在英语中称为upvote(s)和downvote(s)。这些评价会影响用户的Contribution,如果一条评论收到太多的downvotes,那么它还会被隐藏。

3. 比赛

名字颜色

Codeforces在线评测系统最吸引人的就是它独特的比赛系统了。在Codeforces上,每名用户都拥有比赛积分(即Rating)(新用户默认为1500),比赛积分会影响用户的名字颜色,具体来说就是这样的:

Rating 名字颜色
<1200
<1400 绿
<1600
<1900
<2100
<2300
<2400
<2600
<3000
>=3000

注意,这里的黑名指的是首字母为黑色,其余字母为红色(所以大部分人叫黑红名),例如$\color{black}\textbf{t}\color{red}\textbf{ourist}$。真正的黑名是网站管理员,例如$\color{black}\textbf{MikeMirzayanov}$。没有参加比赛的用户默认没有名字颜色(其实就是黑色),例如$\text{csacademy}$。

有人也许发现了,上面的表中有两个橙、两个红,这是因为这两种颜色都不仅仅对应着一个称号(分开成了两个称号),所以有可能您会发现两个红名的用户称号不同。

比赛种类

Codeforces上举行的比赛一般有4种,分别是Div.1,Div.2,Div.3和Educational Round。先讲讲Educational Round,Educational Codeforces Round一般题目较多,采用扩展ACM-ICPC赛制,即提交代码立即出结果,错误一次计10分钟罚时。但是为什么叫“扩展”呢,因为比赛结束后会有12个小时的全网开放hack时间。

剩下的就是Codeforces最常见的Div.1,Div.2,Div.3的比赛了,我们先用一张表格了解一下这三类比赛(个人看法)。

种类 难度 人数 次数 参加人群
Div.1 橙(紫)名以上(含)
Div.2 中等 橙(紫)名以下(不含)
Div.3 较多 蓝名以下(不含)

关于表格内的内容:当一场Div.2的比赛和一场Div.1的比赛同时进行时,紫名只能参加Div.1,否则才可以参加Div.2。

当然,如果您对上面的解释不清晰,您可以查看比赛预告中的说明,或者在比赛预告中的评论中提问。

比赛流程

在参加一场比赛之前,您需要报名。首先单击CONTEST进入页面,然后单击要报名的比赛后面的 Register >> ,在弹出的页面中单击Register即可。

比赛开始后,我们便可以单击 Enter >> 进入比赛页面享受Codeforces的高质量比赛了!

比赛页面的内容大致如下:


关于Codeforces赛制:

Codeforces赛制的题目会有两套数据,一套称为Pretest,另一套称为System Test,当比赛进行时,您的提交将会用Pretest测评,若通过所有Pretest,则会显示$\color{green}\text{Pretests passed}$,否则显示错误的Pretest编号和错误类型,例如$\color{red}\text{Wrong answer on pretest 3}$,并且还会被罚50分(如果编译错误则不会罚分,错在第一个测试点也不会被罚分)。

当您的一道题目$\color{green}\text{Pretests passed}$后,您可以单击题目列表中那到题目后面的“锁”的符号,这称为锁题,当您锁了一道题后,您就不能再次提交该题了,但是您可以查看同一个房间中其它人本题的代码,若找到了其他人代码中的错误,您可以向他发起hack,即提交一组测试数据使得他的代码错误(例如Wrong answer等等)。一次成功的hack可以使您获得100分,不成功则扣掉50分。

房间:参加比赛的所有用户大约每40各人组成一个房间,只有在房间里的用户才能互相hack。

发起hack的方式是:双击您的房间的排行榜中的任何一个绿色数字,再单击通过的提交的编号查看代码,如果找到了错误,那么您可以单击hack it!,然后输入数据或者上传数据生成器,单击hack即可。

注意:锁了的题不能再提交,也就是说如果您锁了一道题,但是您的程序被hack了,那么您就没有补救的机会了。所以,叉人有风险,锁题需谨慎

比赛结束后不久就会进行System Test,就是将您已经通过Pretest的程序再测试一套数据,这套数据包括所有比赛中成功hack的数据(所以在Codeforces上有些题目可能拥有上百个测试点),只有您的程序通过了System Test,您的程序才是真正通过了,否则称为Failed System Test(FST),这道题也就不得分了。

如何读懂排行榜

比赛排行榜图解:

Rating

比赛结束后Codeforces系统会自动根据您的比赛排名为您计算Rating。

4. 题解

若您在做题过程中遇到了困难,那么下面的内容可能对您有帮助:

  1. 找到该题侧边栏中的"Contest materials",然后单击"Tutorial"或者"Editoral",会有英语(极少数为俄语)题解。

  2. Codeforces上的提交记录和代码都是公开的,你可以找到该题其它人的提交记录,查看代码。

注意:不要提交其它人的代码,否则您会被警告甚至会被封号。

  1. 发贴求助。

以上就是Codeforces在线评测系统的游玩攻略了,祝您能在Codeforces上收获知识与乐趣!当然还有高Rating啦