跳转至

OI 賽事與賽制

賽事簡介

信息學奧林匹克競賽(英語:Olympiad in Informatics,簡稱:OI)是一門在中學生中廣泛開展的學科競賽,和物理、數學等競賽性質相同。OI 考察的內容是參賽者運用算法、數據結構和數學知識,通過編寫計算機程序解決實際問題的能力。

OI 競賽種類繁多,僅中國就包括:

  • 全國青少年信息學奧林匹克聯賽(NOIP)
  • 全國青少年信息學奧林匹克競賽(NOI)
  • 全國青少年信息學奧林匹克競賽冬令營(WC)
  • 國際信息學奧林匹克競賽中國隊選拔賽(CTSC)

國際性的 OI 競賽包括:

  • 國際信息學奧林匹克(IOI)
  • 美國計算機奧林匹克競賽(USACO)
  • 日本信息學奧林匹克(JOI)
  • 亞太地區信息學奧林匹克(APIO)

    ……

對於大部分選手而言,每年的新賽季從 9 月的 CSP-J/S 第一輪開始。

在中國,OI 競賽允許使用的語言只有 C++(曾經也開放過 C 和 Pascal 語言,但都已停止支持)。其中,不同的競賽對 C++ 的版本有不同的規定。考試題目一般為算法或者數據結構相關的內容,題目形式包括傳統題(最常見的規定輸入和輸出到文件的題目)和非傳統題(提交答案題、交互題、補全代碼題……等等)。

賽制介紹

OI 賽制

選手僅有一次提交機會。比賽時無法看到評測結果,評分會在賽後公佈。每道題都有多個測試點,根據每道題通過的測試點的數量獲得相應的分數;每個測試點還可能會有部分分,即使只有部分數據通過也能拿到分數。

CSP-J/S 第二輪、NOIP、省選、NOI 都是 OI 賽制。

IOI 賽制

選手在比賽時有多次提交機會。比賽實時評測並返回結果,如果提交的結果是錯誤的,不會有任何懲罰。每道題都有多個測試點,根據每道題通過的測試點的數量獲得相應的分數。

APIO、IOI 都是 IOI 賽制。目前國內比賽也在逐漸向 IOI 賽制靠攏。

Codeforces (CF) 賽制

Codeforces 是一個在線評測系統,會定期舉辦比賽。

它的比賽特點是在比賽過程中只測試一部分數據(Pretests),而在比賽結束後返回完整的所有測試點的測試結果(System Tests)。比賽時可以多次提交,允許 Hack 別人的代碼(此處 Hack 的意思是提交一個測試數據,使得別人的代碼無法給出正確答案)。如果想要 Hack,選手必須要鎖定自己的代碼(換言之,比賽時無法重新提交該題)。Hack 時不允許將選手程序拷貝到本地進行測試,源代碼會被轉換成圖片。

Codeforces 同時提供另外一種賽制,稱作擴展 ICPC(Extended ICPC 或 ICPC+)。在這一賽制中,在比賽過程中會測試全部數據,但比賽結束以後會有 12 小時的全網 Hack 時間。Hack 時允許將選手程序拷貝到本地進行測試。

主要比賽

CSP-J/S

CSP-J/S(英文:Certified Software Professional Junior/Senior)是 NOIP 在 2019 年被取消之後,CCF 開設的非專業級軟件能力認證測試,面向全年齡段。

CSP-J/S 分為入門級(Junior,簡寫為 CSP-J)與提高級(Senior,簡寫為 CSP-S)兩組,賽程分為第一輪(一般在每年 9 月)和第二輪(一般在每年 10 月)兩場。第一輪為筆試,考察計算機理論和操作常識和基本的算法與數學知識;第二輪為上機考試,入門組與提高組都為 4 題,其中入門組考試時間 3.5 個小時,提高組 4 個小時(CSP-S 2019 除外,該場比賽使用舊 NOIP 提高組賽制,賽程分為兩天,一天 3 題 3.5 小時)。第一輪面向社會全體學生報名,經過一定的排名篩選後成績優秀者有機會參加第二輪。

報名參加第一/二輪、第二輪後進行題目申訴等都需要向 CCF 繳費。

兩輪測試都會以省為單位按照排名對選手成績進行評級認證,分為一、二、三等。

NOIP

NOIP(英語:National Olympiad in Informatics in Provinces,中文:全國青少年信息學奧林匹克聯賽)是中華人民共和國組織的、面向中國(含港澳)中學生的信息學競賽。

2018 年及以前的舊賽制:NOIP 按參賽對象分為普及組和提高組,2018 年於上海試點入門組;按階段分為初賽和複賽兩個階段。初賽會考察一些計算機基礎知識和算法基礎,複賽為上機考試。時間上一般是 11 月的第二個週末,週六上午提高組一試 8:30-12:00(3.5 小時,共 3 題),下午 14:30-18:00 普及組(3.5 小時,共 4 題),週日上午提高組二試 8:30-12:00(3.5 小時,共 3 題)。全國使用同一套試卷,但是評獎規則按照省內情況由 CCF(中國計算機學會)統一指定,並於賽後在 NOI 官方網站 上公佈。各省的一等獎分數線略有不同。

NOIP 於 2019 年 8 月 16 日 被 CCF 暫停,於 2020 年 1 月 21 日 被宣佈恢復。2020 年起的 NOIP 賽制與以往有所不同,具體如下:

  • 取消初賽,由 CSP-J/S 第一輪替代;
  • 取消普及組,由 CSP-J 替代,此後 NOIP 僅有一個組別,面向提高組水平選手;
  • 賽程由以往的兩天共 6 題、每天 3.5 個小時,縮減為一天 4 題、共 4.5 個小時。
  • 選手需要在 CSP-S 第二輪中取得一定名次才能獲得 NOIP 參賽資格,具體名額各省有所差異。NOIP 省級參賽資格由該省在去年賽季中的參賽人數和成績等有關。

報名參加 NOIP 和進行題目申訴不需要額外繳費。

NOIP 以省為單位排名評獎。截至 2019 年,大部分高校的選手獲得提高組省一等獎可以得到自主招生資格。

2020 年 1 月,中華人民共和國教育部發布 關於在部分高校開展基礎學科招生改革試點工作的意見。意見指出,2020 年起,不再組織開展高校自主招生工作,並在部分一流大學建設高校開展基礎學科招生改革試點(強基計劃)。

省隊選拔賽

省隊選拔賽(簡稱:省選)用於選拔各省參加全國賽的代表隊,一般舉行於每年的 1~4 月。賽程上一般分為兩天,每天 3 題 4.5 小時。

省選題目由各個省自行決定,目前的趨勢是很多省份選擇聯合命題。

各個省隊的名額有複雜的計算公式,一般和之前的成績和參賽人數有關。通常來講,NOIP 分數需要在省選的指標中佔一定比例。根據規則,初中選手只能被選拔為 E 類選手,不能參加 A、B 類選拔。A 類選手有 5 人(4 男 1 女),其他選手根據給定名額和所得分數依次進入 B 隊。一個學校參加 NOI 的名額不超過本省 A、B 名額總數的三分之一(四捨五入),得分最高且入選 A 隊的女選手不佔該比例(簡稱 ⅓ 限制或 ⅓ 淘汰)。

自 2020 年起,NOI 省隊選拔由 CCF 統一命題和評測,有能力命題的省可自行命題,但選拔方式需得到 CCF 的批准。自 2024 年起,NOI 省隊選拔恢復各省自主命題,有需求的省份可組織聯考或使用他省試題,但具體方案需要得到 CCF 的批准。

NOI

NOI(英文:National Olympiad in Informatics,中文:全國信息學奧林匹克競賽)是國內包括港澳在內的省級代表隊最高水平的大賽。

NOI 一般在七月份舉行,選手分為正式選手與夏令營選手兩類。正式選手又分為三類,其中 A、B 類為省隊正式選手,C 類選手為邀請賽選手。A、B 類對應省隊的 A、B 類選手(其中 A 類在計算成績時會有 5 分加分);C 類名義上是學校對 CCF 做出突出貢獻後的獎勵名額。夏令營選手分為 D、E 類,分別對應以非正式選手身份參賽的高中組與初中組選手。夏令營選手如果成績超過分數線的話,只有成績證明而沒有獎牌(同等分數含金量要低一些)。排名前 60 的正式選手組成國家集訓隊,獲得保送資格。

在國際平台上,為了與其他同樣稱作 NOI 的比賽區分,有時會被稱作 CNOI。

WC

WC(英文:Winter Camp,中文:全國青少年信息學奧林匹克競賽冬令營)是每年冬天在當年 NOI 舉辦地進行的一項活動。

WC 的內容包括若干天的培訓和一天的考試。這項考試主要用於從國家集訓隊(50 人)選拔國家候選隊(15 人),但是前一年 NOIP 與 CSP-S 第二輪取得較好成績的選手也可以參加(不參與選拔)。

APIO

APIO(英文:Asia-Pacific Informatics Olympiad,中文:亞太地區信息學奧林匹克競賽)是一個面向亞太地區在校中學生的信息學學科競賽。CCF 每年會在五月初舉辦中國賽區鏡像賽。在比賽日前後會有培訓活動。

CTS

CTS(舊稱:CTSC, 英文:China Team Selection Competition,中文:國際信息學奧林匹克競賽中國隊選拔賽)用來從國家候選隊(15 人)中選拔國家隊(6 人)準備參加當年夏天的 IOI 比賽,其中正式選手 4 人,替補選手 2 人。與 WC 一樣,前一年 NOIP 取得較好成績的選手也可以參加(不參與選拔)。

APIO 和 CTS 都以省為單位報名,一般按照 NOIP 的成績排序來確定參加 APIO 和 CTS 的人員(二者一般時間上非常接近)。

IOI

IOI(英文:International Olympiad in Informatics,中文:國際信息學奧林匹克競賽)是一年一度的面向全球中學生的信息學科競賽。每個國家有四人蔘賽,比賽一般會有直播。IOI 賽制中每個題目會有 Subtask(子任務),每個子任務對應一定的分數。

學科營

北京大學(PKU)

  • 北京大學信息學冬季體驗營(PKUWC):在冬令營前後舉行。
  • 北京大學信息學體驗營(PKUSC):一般在六月份在校內舉行。由於在學校機房比賽,機房環境是 Windows,比賽系統是 OpenJudge。
  • 北京大學中學生暑期課堂(信息學):在暑假舉行,面向高二年級理科學生。

清華大學(THU)

  • 計算機系 "大中銜接" 冬季研討與教學活動:相當於信息學冬令營,有時也會用英文簡寫為 THUWC。一般共兩天,上午為競賽(第一天是標準 OI 競賽,第二天為清華獨創的 "工程題" 競賽),下午為課程培訓。

其他國家和地區的 OI 競賽

美國:USACO

官網地址:http://www.usaco.org/

USACO 或許是國內選手最熟悉的外國 OI 競賽(可能也是中文題解最多的外國 OI 競賽)。

每年冬季到初春,USACO 會每月舉辦一場網絡賽。一場比賽持續 3~5 個小時。

根據官網的介紹,USACO 的比賽分成這 4 檔難度(2015~2016 學年之前為 3 檔):

  • 銅牌組,適合編程初學者,尤其是隻學了最最基礎的算法(如:排序,二分查找)的學生;
  • 銀牌組,適合開始學習基本的算法技巧(如:遞歸,搜索,貪心算法)和基礎數據結構的學生;
  • 金牌組,學生會遇到更復雜的算法(如:最短路徑,DP)和更高級的數據結構;
  • 鉑金組,適合有着紮實的算法設計能力的選手,鉑金組可以幫助他們以複雜且更開放的問題來挑戰自我。

在國內,目前 USACO 題目最齊全的 OJ 平台是洛谷。

波蘭:POI

官網地址:https://oi.edu.pl/

官方提交地址:https://szkopul.edu.pl/p/default/problemset/

POI 是不少省選選手最常刷的外國 OI 比賽。

根據 http://main.edu.pl/en/ 的描述,POI 的流程如下:

  • 第一輪:五題,網絡賽,公開賽;
  • 第二輪:包含一場練習賽,和兩場正式比賽;
  • 第三輪:賽制同上。
  • ONTAK:POI 訓練營(類似國內的集訓隊)。

另有 PA,大意為「算法大戰」。

目前在國內 OJ 中,POI 題目最全的是 BZOJ。

克羅地亞:COCI

官網地址(英文):http://www.hsin.hr/coci/

官網地址(克羅地亞語):http://www.hsin.hr/honi/

難度跨度很大的比賽,大約是從普及 - 到省選 -。

以往 COCI 所有的題目均提供題目、數據、題解和標程。2017 年底起,COCI 的題解和標程停止了更新。2019-2020 賽季重新開始更新題解和標程。

洛谷、BZOJ 和 LibreOJ 都有少量的 COCI 題目。

日本:JOI

官網地址:https://www.ioi-jp.org/

JOI(日文:日本情報オリンピック,中文:日本信息學奧賽)所有的題目都提供題目、數據、題解和標程。近兩年的 JOI 決賽和春訓營提供了英語題面,但並沒有英語題解。歷年的 JOI Open 都提供了英語版題面和題解。

JOI 的流程:

  • 預賽(予選)
  • 決賽(本選/JOI Final)
  • 春訓營(春季トレーニング合宿/JOI Spring Camp/JOISC)
  • 公開賽(通信教育/JOI Open Contest)

預賽難度較低,自 2019/2020 賽季起,預賽分為多輪。JOI Final 的難度從提高 - 到 提高 + 左右。JOISC 和 JOI Open 的題目的難度從提高到 NOI - 不等。

絕大部分 JOI 題可以前往 AtCoder 提交。你可以在 JOI 官網或者 AtCoder 上找到更多的 JOI 題(日文題面)。

目前 LibreOJ 和 BZOJ 有近些年的 JOI Final、JOISC 和 JOI Open 的題目。

俄羅斯:ROI

官網地址:http://neerc.ifmo.ru/school/archive/index.html

在線提交地址:https://contest.yandex.ru/roiarchive/ 和 Codeforces(部分)。

ROI(俄文:олимпиадная информатика,中文:俄羅斯信息學奧賽)是俄羅斯的信息學競賽。

流程:

  • 市級比賽(Municipal Stage/Муниципальный этап)
  • 州級比賽(Regional Stage/Региональный этап)
  • 決賽(Final Stage/Заключительный этап)

目前 LibreOJ 有近幾年的 ROI 決賽題的譯文。

除此之外,俄羅斯較大型的、面向中學生的比賽還有:

加拿大:CCC & CCO

CCC(英文:Canadian Computing Competition),CCO(英文:Canadian Computing Olympiad),可在其 官網 查詢歷屆的信息和試題等。

在 DMOJ 上可以提交 CCCCCO,該 OJ 上還有 CCC 題解。

CCC Junior/Senior 貼近 NOIP 普及組/提高組難度。CCO 想要拿到金牌可能得有 NOI 銀牌的水平。

新加坡:NOI SG

官網地址:https://noisg.comp.nus.edu.sg/noi/

全稱 Singapore National Olympiad in Informatics,在新加坡國內語境且不引起歧義的情況下也作 NOI。賽制上分為 Online Qualification Contest(在線資格賽)和 Final Contest(全國決賽)。在線資格賽以學校為單位報名參加,選手在本校參賽,通過網絡進行遠程提交。資格賽成績只在校內排名,前 5 名且非零分選手有資格作為校代表隊參加全國決賽。

目前國內 OJ 對於 NOI SG 的題目收錄比較匱乏,可以在 官方的 GitHub 帳號 上找到歷年題面、測試數據和官方標準程序。

台灣地區:資訊奧林匹亞競賽

台灣地區把 OI 中的 informatics 翻譯成「資訊」而非大陸通用的翻譯「信息」。

台灣地區的選手如果想參加 IOI,需要經過這幾輪比賽:

  • 區域資訊學科能力競賽
  • 全國資訊學科能力競賽
  • 資訊研習營(TOI)

其他國家

其它國際 OI 競賽

BalticOI

BalticOI 面向的是波羅的海周邊各國。BalticOI 2018 的參賽國有立陶宛、波蘭、愛沙尼亞、芬蘭等 9 國。題目難度大。

除了 2017 年,BalticOI 每年都公開題面、測試數據和題解。BalticOI 沒有一個固定的官網,每年的主辦方都會新建一個網站。歷年的官網地址見 帖子

目前 LibreOJ 有近十年的 BalticOI 題。

BalkanOI

BalkanOI 面向巴爾幹地區周邊各國。BalkanOI 2018 的參賽國有羅馬尼亞、希臘、保加利亞、塞爾維亞等 12 國。題目難度大。

BalkanOI 只有某幾年公開題面、測試數據和題解,官網地址見 帖子

CEOI

CEOI 2018 的參賽國與上面兩個比賽有部分重疊,包括波蘭、羅馬尼亞、格魯吉亞、克羅地亞等國。題目難度大。

CEOI 每年都公開題面、測試數據和題解,官網地址見 帖子

在國內 OJ 中,BZOJ 的 CEOI 題相對最齊。

eJOI

eJOI 全名 European Junior Olympiad in Informatics。參賽國包含俄羅斯、亞美尼亞、保加利亞、波蘭等國。題目難度較大。

eJOI 每年都公開題面、測試數據和題解,官網地址見 帖子

ISIJ

ISIJ 全名 International School in Informatics "Junior",中文名「國際初中生信息學競賽」。

官網地址:http://isi-junior.com/

NOI

Warning

此處介紹的不是「全國信息學奧林匹克競賽」。

NOI 全名 Nordic Olympiads in Informatics。

官網地址:http://nordic.progolymp.se

近兩年才開始舉辦的比賽,面向北歐各國。

參考資料