codeforces的正确打开方式

https://www.cnblogs.com/muzu/p/7616746.html

1.背景

可能很多人都久闻codeforces网站的大名,却苦于各种各样的区域性问题或玄学问题,没能真正地体验到cf所带来的极致魅力

而网络上关于这方面的博文太少了(至少我没找到过),于是就写了这样的一篇博文


2.关于codeforces

Codeforces
简称: cf(所以谈论cf的时候经常被误会成TX的那款游戏).
网址: codeforces.com
  这是一个俄国的算法竞赛网站,由来自萨拉托夫州立大学、由Mike Mirzayanov领导的一个团队创立和维护,是一个举办比赛、做题和交流的平台.举办比赛和做题就不说了,“交流”指的是自带blog功能,可以求助/发布题解之类.官方语言是俄语和英语,因此可能有些偏僻的题目的题解是用俄语写的,别慌,扔给Google Translate翻成英文,可读性还是很不错的.至于英语,cf上Russian English确实有,但并不严重,题目里偶尔会出现很奇怪的表达方式或者不常用的词汇,这时候就借助样例吧,找个人问问也是可以的.cf最大的特点是比赛,所以接下来主要的篇幅用于介绍cf传统比赛的规则.


3.关于比赛

在cf,所有的用户根据在以往比赛中的表现被赋予一个Rating并冠以不同的头衔,名字也会以不同的颜色显示。

比如Expert是蓝色,Master是黄色,因此我们通常以颜色代指头衔.选手们按Rating以1700为界划分为Div.1和Div.2两类,相应地,cf上的比赛也会指明是Div.1还是Div.2,抑或同时进行.Div.1的比赛较难;如果同时进行,Div.1的ABC三题会和Div.2的CDE三题相同.每次比赛结束后Rating都会依据此前各个选手的Rating和公式重新计算.对于没有参加过比赛的新用户,在比赛后重新计算Rating的时候,他此前的Rating会被视为1500.

  在比赛中,选手有2个小时的时间去解决5道题,而解决某题得到的分数由该题当前的分数减去(不成功的提交次数)*50,这里,某道题的分数是由比赛开始时的分数随时间线性减少得到的.同时,这里的“解决某道题”是指Pretest Passed,即,通过了一次仅含部分测试点的测评,而最终决定是否得到这道题的分数,要看比赛结束后的统一测评(System Test),如果在这时没有通过,就称FST(Failed System Test).在比赛中的提交可以看到在哪个测试点出了什么问题(例如,仅一行WA on pretest 3).

  同一个Div的选手将被划分到若干个Room里,每个Room大概30位选手;当某道题Pretest Passed之后,可以选择锁定(Lock)该题代码,之后就可以查看同一个Room内其他选手该题的代码(当然了,这也是已经通过pretest的),并试图找出其中的漏洞,自己出一个数据(可以手打,也可以提交数据生成器)让这个代码不能通过,这就是Hack,有时也称Challenge.一次成功的Hack可以得到100分,而如果没有成功,将会被扣50分,分别被称为(un)successful hacking attempt.

  在比赛中,选手可以看到实时的排名(Standing),也可以选择只看加了好友的选手的排名.此外,还可以看到某题有多少人通过的信息,这在某些情况下很有用.


4.关于PROBLEMSET

cf题库的所有题目都是在该平台上举办过的比赛的赛题,尽管WJMZBMR曾经表示由于出题人很杂cf的题目质量参差不齐,但我个人认为还是够可以的,两个小时五道题也确实很能让人得到锻炼.和Spoj形成鲜明对比的,cf的机子效率很不错,所以很容易培养出STL依赖症等等不良代码习惯,应当引起足够的注意.

  在cf上做题的过程当中如果遇到困难,首先可以看数据.数据从某种程度上来说是公开的,在提交记录页面可以看到所有你的程序运行过的数据,但是太大的数据也只会显示前几行,因此也不算完全公开.cf的测试数据笔数通常会让习惯了10个点的人大吃一惊,一道题动辄几十个测试点,甚至有的有200多笔.通常来说,前面大概5组是比赛时的Pretest,一般会尽可能的涵盖各种情况,也有放个大数据卡TLE的;其后的数据规模递增,但是最后几组又不见得是极限数据——这是比赛时Hack的成果.Hack成功的数据会被追加到该题的测试数据当中.

  如果数据不能解决问题,可以试图去找题解.题目页面的右下角会标出它所属的比赛的相关文档,通常会有Announcement(赛前和赛中的公告,其中赛中的公告通常是明确题意之类),有些则会有Tutorial,这就是题解,顺带一提cf上另外一个表示题解的词是Editorial.一次比赛的题解可能不是官方的,也可能不包含该次比赛全部的题目的,也有可能是用俄语写的(前面提到过了,翻译成英语就好),也有可能有好几篇(这会以Tutorial #1,#2的形式标识).

  近期的比赛多半都有官方题解,以前的就不好说了.这时候需要借助另外一个神器:神犇们的代码.cf上普通题库的所有的代码都是公开的,并且支持按照提交先后(Judging Time),运行时间(Execution Time)和代码长度(Solution Size)进行排序.不仅仅是帮助做题,这个功能对于了解一道题的各种做法也是有好处的.


5.其它的一些操作

1.关于Rating的计算 :

这是一种类似Elo Rating的系统,可以在cf的FAQ或Wiki百科找到更详细的信息.  

2.关于Contribution :

在用户信息页面会见到这个东西,它用来衡量一个用户对cf的贡献程度.这个数值取决于该用户所写的blog和他对其他的blog所作出的评论的“反响”.每个blog的下方和评论的旁边都会有一个往上和往下的箭头以及一个数字,表示你可以对他进行好或者不好的评价,而数字则显示当前已有的评价,而这就是前面说到的“反响”.点击了往下的箭头会让这个数值-1,点击了往上的箭头则会+1或+2,这里+2的条件是你本身的contribution不低于+25.如果你打算做评论,请谨慎,因为在贴吧里很正常的回复可能会被认为“没意义”或者别的原因而反响很差(比如在比赛预告帖回复Good luck everyone之类的可以被-12),随而contribution也会很难看.由于这样的原因,你可以选择完全可以无视这个数值.  3.关于GYM : 在gym里举办的比赛基本上是ACM/ICPC规则的,可以单干,也可以组队(人数似乎没有限制).gym的题目并不会在Problemset里显示,提交之后也不能看到数据(和常规比赛时一样,仅能看到一行TLE on test 137之类),不过在名字变红[即(International) Grandmaster]之后选上Coach mode就可以看到数据.gym里别人的代码的公开性也服从前述规则.

4.关于Virtual Participant :

有时我们会在某条提交记录的ID右上方看到一个小小的#号或者显示一个时间,鼠标移上去会出现Virtual Participant的字样.正如其字面意思,这意味着这个用户正在“虚拟”参加一场比赛.如果你虚拟地参加一场比赛,系统会在接下来的2小时内(如果gym的话另当别论)为你完全地模拟当时的情境供你练习——包括Standing等等.  

5.关于奇葩的测评结果 :

这包括Compilation failed,Denial of Judgement和Judgement Failed.在你确认你的程序没什么重大问题之后,基本可以认定这不是你的问题而是系统出了点差错.Judgement Failed通常会呈现爆发的样子,一段时间内几页都是,当这种情况结束的时候就正常了;而Denial of Judgement仅会在某段时间内在特定的题目发生,原因可能是数据损坏之类的,可能要等上个一两天才能得到解决(也有可能在问题解决后被自动重新测评);Compilation failed我还没有见过...字面意思是编译器不干活?


CodeForces入门相关推荐

  1. [区间记忆化dp入门][Bribe the Prisoners SPOJ - GCJ1C09C][Codeforces Round #505D (rated, Div. 1 + Div. 2, ba]

    Bribe the Prisoners SPOJ - GCJ1C09C 作为这类题代表,f[i][j]代表第i点到第j点单独处理的最值 这题关键:释放某个囚犯后,就把囚犯分成两段,两段互相独立 这类d ...

  2. CodeForces - 510A 蛇形图案输出 难度:C++入门 复杂度:简单 翻译难度:一般

    from Sagittarius's Trial射手座 输入行数和列数,输出类似于的蛇形图案(行数保证是单数,第二行的井号必须在右边) C++基础编程级别练习题.两层循环,外层循环数为单数时,全部输出 ...

  3. CodeForces - 711A 找座位 难度:C++入门 复杂度:简单 翻译难度:难

    from Pisces's Trial双鱼座 输入第一个整数表多少行座位,之后输入座位的占用情况:输出是否能找到给两人一起坐并且在同侧的座位(输出YES或NO),并把找到的座位替换为"++& ...

  4. ACM如何入门,ACM竞赛需要学习哪些算法?

    #################成绩################## 大一:2017年4月份"玲珑杯"河南工业大学2017年ACM程序设计大赛暨河南高校邀请赛,获得银奖 20 ...

  5. Educational Codeforces Round 40千名记

    人生第二场codeforces.然而遇上了Education场这种东西 Educational Codeforces Round 40 下午先在家里睡了波觉,起来离开场还有10分钟. 但是突然想起来还 ...

  6. CodeForces - 1008D - Pave the Parallelepiped (容斥原理+重复组合公式+状态压缩+思维)

    题目链接: http://codeforces.com/problemset/problem/1008/D 前置知识: 1.容斥原理:(见百度百科) https://baike.baidu.com/i ...

  7. 0 前言 关于数学基础以及如何入门算法学习

    为神魔 为神魔我博客园没人点赞也没有推荐QAQ 于是含泪把博客搬到csdn-- 然后想到,哦,对了,csdn唯二的赞,好像还是我逼着队友点的(痴呆)   嗯!总之,以后会主要更新[数学基础]这部分,因 ...

  8. Codeforces 743 D Chloe and pleasant prizes

    题目地址:http://codeforces.com/contest/743/problem/D 题意:告诉你一个树每个节点的价值,让你求出不相交的两个子树的价值和最大. 思路:树形dp入门.用vec ...

  9. 牛客算法竞赛入门笔记1

    2021-10-20:昨天开的新坑,看了前几集感觉还可以,后悔为什么没早点跟着学,以前就感觉到了自己的知识体系太散了,这个课好像是11月还是12月结束,她说能达到icpc铜牌水平,我姑且相信好吧,希望 ...

最新文章

  1. (学)新版动态表单研发,阶段成果----1
  2. python开发网站的优势_Python开发 的优势在哪里
  3. Scala教程之:可变和不变集合
  4. sentinel的@SentinelResource注解使用
  5. labuladong 的算法小抄_关于算法笔试的几个套路,一点就透
  6. matlab对多项式求导,matlab中多项式求导
  7. java filter重定向_Java Filter(过滤器)——重定向
  8. 初入职场的程序员,不想被时代淘汰?那你必须迈过这个坎!
  9. 基于逻辑回归的评分卡模型简单概述
  10. 简单动态字符串(SDS)
  11. 雨中走路淋雨多还是跑步淋雨多?
  12. CH340驱动:出现预安装成功,却没有检测到驱动
  13. excel自动化的第一个实用例子(宿舍分饭)
  14. 璞华大数据HawkEye设备数字化管理之远程协助功能
  15. 关于SIPp的一些信息
  16. sql server 2005快捷键
  17. XCTF 攻防世界 MISC杂项 高手进阶区
  18. 动态规划题目集合——贰
  19. HDU5172 - GTY's gay friends - 哈希
  20. 机器学习中的先验、后验和似然

热门文章

  1. 图数据库OrientDB-基础篇
  2. java之环境变量设置
  3. 互联网时代各行业都在快速更替,金融行业为什么即将成为下一个风口?
  4. 2021年中国光谱分析仪器市场趋势报告、技术动态创新及2027年市场预测
  5. 晨风机器人发送图片_晨风机器人基本使用说明
  6. 3. css-loader
  7. java中数组下标越界的异常_java新手求助 数组下标越界异常
  8. 思科模拟器之虚拟局域网
  9. 支付宝当面付php接入源码下载,支付宝当面付(扫码支付)实例源码下载(官方)
  10. SQL数据库笛卡尔积、投影、选择、连接运算