平臺簡介&計分方式
Codeforces是一家為計算機編程愛好者提供在線評測系統(tǒng)的俄羅斯網(wǎng)站。該網(wǎng)站來自薩拉托夫州立大學(xué)。由Mike Mirzayanov領(lǐng)導(dǎo)的一個團隊創(chuàng)立和維護,是舉辦比賽、做題和交流的平臺。
網(wǎng)站中 “交流” 指的是自帶blog功能, 可以求助/發(fā)布題解之類,能夠與各國賽手針對某一問題進行研究。官方語言是俄語和英語,俄語可以使用Google Translate翻成英文,可讀性還是很不錯的。
Codeforces 最大的特點是比賽,在Codeforces中所有的用戶根據(jù)在以往比賽中的成績與表現(xiàn)被賦予一個Rating(等級)并冠以不同的等級頭銜,名字也會以不同的顏色顯示。在沒有打任何Codeforces的比賽前,你是“unrated”(暫未評級),名字顏色是黑色。rating=1500(不顯示,只有打了比賽之后才會體現(xiàn)出來)。
打過比賽后,就會變成“rated”,且會有如下評級:
①灰名,Newbie(新手):rating<1200;
②綠名,Pupil(入門):1200≤rating<1400;
③青名,Specialist(專家) 1400≤rating<1600;
④藍名,Expert(行家):1600≤rating<1900;
大部分OIer都在綠,青,藍名之間
⑤紫名,Candidate master(能手):1900≤rating<2100;
⑥橙名,Master(主宰):2100≤rating<2300;
到了橙名就能算得上是OI界的高手了,差不多在世界前1000左右(不包括沒有用Codeforces的)
⑦橙名,International Master(國際主宰):
2300≤rating<2400;
⑧紅名,Grandmaster(特級大師):
2400≤rating<2600;
⑨紅名,International Grandmaster(國際特級大師):
2600≤rating<3000;
⑩黑紅名,legendary Grandmaster(傳奇特級大師):
3000≤rating;
選手們按Rating以1700為界劃分為Div.1和Div.2兩類,Codeforces上會注釋Div.1還是Div.2,或同時進行Div.1的比賽較難;如果同時進行,Div.1的ABC三題會和Div.2的CDE三題相同。
每次比賽結(jié)束后Rating會根據(jù)之前各個選手的Rating和公式重新計算。對于沒有參加過比賽的新用戶,Rating會被視為1500,作為初始分值。
在比賽中,選手需要在2小時內(nèi)解決5道題,而解決某題得到的分數(shù)由該題當前的分數(shù)減去(不成功的提交次數(shù))*50這里某道題的分數(shù)是由比賽開始時的分數(shù)隨時間線性減少得到的。同時, “解決某道題” 是指Pretest Passed 即:通過了一次僅含部分測試點的測評,而最終決定是否得到這道題的分數(shù),要看比賽結(jié)束后的統(tǒng)一測評(System Test) 如果在這時沒有通過,就稱FST(Failed System Test) 在比賽中的提交可以看到在哪個測試點出了什么問題(例如,僅一行WA on pretest 3)
codeforces當中的比賽一般有六道題,由于一般情況限時2小時,很難把6道題都做完。基本上能夠完成三題,rating就不會跌了。當然rating的漲跌情況也和你現(xiàn)在的rating是有關(guān)系的,系統(tǒng)會根據(jù)現(xiàn)在的rating生成一個期望值,最終的rating就是實際表現(xiàn)和期望值的差值。例:菜鳥做兩題可能就可以漲分,但如果目前的rating已經(jīng)很高的話,也完成兩題,分數(shù)肯定是跌的。
與其他比賽不同的是:Codeforces設(shè)置了Hack環(huán)節(jié)。同一個Div的選手將被劃分到多個Room里,當某一題目Pretest Passed之后,可以選擇鎖定(Lock)該題代碼。之后就可以查看同一個Room內(nèi)其他選手該題的代碼 (已經(jīng)通過pretest的) ,并試圖找到其代碼中的漏洞,模擬出一個數(shù)據(jù) (可以手打,也可以提交數(shù)據(jù)生成器) 使代碼不能通過,這就是Hack。 一次成功的Hack可以得到100分,而如果沒有成功,將會被扣50分。因而需要賽手們謹慎使用Hack權(quán)限。能否Hack成功,分別被稱為(un)successful hacking attempt
如果在【 留學(xué)背景提升 / 國際學(xué)術(shù)活動(報名&備考)】方面
需要支持和幫助的話,歡迎掃碼聯(lián)系我們
還能免費獲得一對一學(xué)術(shù)活動規(guī)劃!

注冊&使用Codeforces
1.首先,輸入codeforces點擊進入
2. 進入之后,你將會看到這樣的一個頁面,先點擊左上角,Register(注冊)
3. 按照提示輸入信息,完成之后,Register一下
4.如圖
5.單擊任一比賽Enter進入,可以查看題目與要求
6.選擇題目單擊,進入問題
7.完成題目后,會出現(xiàn)以下界面
8.若未AC,點擊題號查看錯誤原因
Codeforces科學(xué)刷題
據(jù)說大神們的刷題量都是上萬的,所以正式比賽里可以看到諸多大神不到一分鐘就秒了一道題,手速太快。對Competitive Programming而言,把題目做對是基本要求(題目太難則另當別論),用更快的速度求解才是頂尖高手之間的核心區(qū)別。如果說真的有天賦存在的話,那我們也無能為力;但希望能像賣油翁一樣說出【無他,但手熟爾】。下面需要了解一些關(guān)于Codeforces比賽中一些常規(guī)的問題以及難度分布。
下圖反映比賽中問題分布頻率,展示不同算法(第一列)在不同問題難度(第一行)上的分布頻率情況(這里沒有展示Div1和Div2之間的差別,僅僅是按照題號A、B、C……來推斷難度)。
基于該圖,大概可以知道在什么樣的水平下應(yīng)該掌握什么樣的算法。
可以看到對簡單的A題而言,大部分都是考察基本的編程功底,諸如implementation(大概就是題目說什么,你做什么就是了),math(四則運算、取模取整等等)以及brute force(暴力枚舉)。而隨著難度的增加,比如說E題,主要就在于考察對dp(動態(tài)規(guī)劃),data structures(數(shù)據(jù)結(jié)構(gòu))。當然了,從圖中也可以看出,高難度題目主要在math,geometry(計算幾何),shortest path(圖論)以及games(博弈)上。
Codeforces_Algorithms_Tag_Frequency.jpg
下圖反映了不同算法在不同問題難度上被解決次數(shù)的頻率分布。

以下是搬運了知乎上一位賽手的刷題經(jīng)驗:
只做構(gòu)造題(難度隨自己 rating 變動),并且只要連續(xù)思考 10 分鐘沒有任何進展時,就直接去看題解(如果有進展就將計時器歸零)。事實證明這個方法對我非常有效,畢竟這些題目所需要的常用技巧(tricks)是有限的。
不要覺得看題解是一件很喪氣的事情,有時候沒想出來只是因為你不了解這道題需要的 trick。
我最大的收獲就是熟練掌握了「從特殊到一般」的技巧。大多數(shù)題目是不能一眼看出規(guī)律的,這就需要從小數(shù)據(jù)或特殊數(shù)據(jù)出發(fā)(比如元素值只有 0 和 1),去研究并發(fā)現(xiàn)性質(zhì)和規(guī)律。在做構(gòu)造題時,應(yīng)當重點摸索和體會這一技巧。
作者:靈茶山艾府
鏈接:
https://www.zhihu.com/question/353734418/answer/2353160035
來源:知乎
最后:
附 "ALL" CodeForces Rounds Tutorial By iman_MC
codeforces.com/blog/entry/1492
有些Codeforces上有人發(fā)過的題解并沒有被鏈接到對應(yīng)的題目上(即存在題解,但是題目頁面右下方并沒有Tutorial鏈接),有可能可以在這里找到。

? 2026. All Rights Reserved. 滬ICP備2023009024號-1