平臺簡介&計分方式
Codeforces是一家為計算機編程愛好者提供在線評測系統的俄羅斯網站。該網站來自薩拉托夫州立大學。由Mike Mirzayanov領導的一個團隊創立和維護,是舉辦比賽、做題和交流的平臺。
網站中 “交流” 指的是自帶blog功能, 可以求助/發布題解之類,能夠與各國賽手針對某一問題進行研究。官方語言是俄語和英語,俄語可以使用Google Translate翻成英文,可讀性還是很不錯的。
Codeforces 最大的特點是比賽,在Codeforces中所有的用戶根據在以往比賽中的成績與表現被賦予一個Rating(等級)并冠以不同的等級頭銜,名字也會以不同的顏色顯示。在沒有打任何Codeforces的比賽前,你是“unrated”(暫未評級),名字顏色是黑色。rating=1500(不顯示,只有打了比賽之后才會體現出來)。
打過比賽后,就會變成“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三題相同。
每次比賽結束后Rating會根據之前各個選手的Rating和公式重新計算。對于沒有參加過比賽的新用戶,Rating會被視為1500,作為初始分值。
在比賽中,選手需要在2小時內解決5道題,而解決某題得到的分數由該題當前的分數減去(不成功的提交次數)*50這里某道題的分數是由比賽開始時的分數隨時間線性減少得到的。同時, “解決某道題” 是指Pretest Passed 即:通過了一次僅含部分測試點的測評,而最終決定是否得到這道題的分數,要看比賽結束后的統一測評(System Test) 如果在這時沒有通過,就稱FST(Failed System Test) 在比賽中的提交可以看到在哪個測試點出了什么問題(例如,僅一行WA on pretest 3)
codeforces當中的比賽一般有六道題,由于一般情況限時2小時,很難把6道題都做完。基本上能夠完成三題,rating就不會跌了。當然rating的漲跌情況也和你現在的rating是有關系的,系統會根據現在的rating生成一個期望值,最終的rating就是實際表現和期望值的差值。例:菜鳥做兩題可能就可以漲分,但如果目前的rating已經很高的話,也完成兩題,分數肯定是跌的。
與其他比賽不同的是:Codeforces設置了Hack環節。同一個Div的選手將被劃分到多個Room里,當某一題目Pretest Passed之后,可以選擇鎖定(Lock)該題代碼。之后就可以查看同一個Room內其他選手該題的代碼 (已經通過pretest的) ,并試圖找到其代碼中的漏洞,模擬出一個數據 (可以手打,也可以提交數據生成器) 使代碼不能通過,這就是Hack。 一次成功的Hack可以得到100分,而如果沒有成功,將會被扣50分。因而需要賽手們謹慎使用Hack權限。能否Hack成功,分別被稱為(un)successful hacking attempt
如果在【 留學背景提升 / 國際學術活動(報名&備考)】方面
需要支持和幫助的話,歡迎掃碼聯系我們
還能免費獲得一對一學術活動規劃!

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

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

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