美國計算機奧林匹克競賽檢視原始碼討論檢視歷史
美國計算機奧林匹克競賽 |
美國計算機奧林匹克競賽USA Computing Olympiad(USACO, 是美國一項面向中學生的信息學競賽,首次舉行於1993年。
最新比賽信息
時間(22年~23年)
比賽輪次12月16日~12月19日
第一輪
1月27日~1月30日第二輪
2月24日~2月27日
第三輪
3月24日~3月27日
公開賽
5月25日~6月3日
美國國家隊集訓營
7月15日~7月21日
EGOI 2023(瑞典)8月28日~9月4日
IOI 2023(匈牙利)
22~23賽季最近一輪的USACO於12.16至12.19開放參賽,選手可以在這期間任意時間開始比賽。
USACO是什麼
USACO全稱美國計算機奧林匹克競賽,是由美國一項面向中學生的信息學線上競賽,和NOI在國內的地位相當,都以選拔人才參加IOI為最終目的。
USACO和NOIP、CSP-J/S、ICPC等國內賽事在考察內容上基本一樣,同樣都是算法競賽,考察學生編寫程序解決問題的能力,但賽制和考察偏向上有所不同,USACO的題目通常不會用到很複雜的數據結構,但是思維難度相對較高。
USACO每年在線上舉辦,各國的選手都可以註冊後免費參加。
USACO是含金量相當高的官方競賽。在比賽中獲得優異成績有助於申請美國大學,特別是計算機專業。越來越多進入康奈爾,麻省理工,普林斯頓,哈佛和耶魯等頂尖大學的學生都參加過美國計算機科學競賽(USACO),並且取得過非常好的成績。
例如著名的「美國隊長」羅哲正同學,就通過參加USACO進入IOI美國國家隊,並獲得IOI金牌,最終放棄清華,接受了麻省理工拋來的橄欖枝。
為什麼要參加USACO
USACO題目重思維、質量高,作為要參加CSP-J/S、NOIP等國內賽事的選手,參加USACO能起到以賽代練的作用。
而且USACO作為美國計算機奧林匹克國家隊選拔賽,備受美國名校關注。
參加USACO至少有三次月賽和一次公開賽機會晉級,可最大程度、最低成本提升學術背景,對海外留學有很大的助益。
USACO月賽舉辦期間,可在規定時間內連續晉級,並最終晉級銀組、金組,甚至白金組,在比賽中獲得高分,是申請海外名校的一大學術亮點。
USACO賽制詳解
USACO採取積分賽制,分為月賽和公開賽兩輪。
在每年的12,1,2月份會組織月賽,一月一次;
3月份會組織一次USACO Open(公開賽);
5-6月會組織美國國家隊集訓(26人),選拔IOI美國國家隊成員(4人)。
在每場月賽中,根據之前題目的完成情況,選手會被分為不同的段位(青銅,白銀,黃金與鉑金),不同段位的題目難度依次遞增。
新註冊的參賽選手需要從青銅起步,在規定時間內完成三道題目,如果完成度較好將會被提升到更高段位,厲害的選手甚至可以在一次月賽開放期內連升多級到鉑金段位。[1]
題庫訓練
USACO提供一個題庫可供全世界所有的信息學競賽選手進行訓練。題庫共有6個chapter,為六檔難度的試題。每一個chapter中一般有4~5個section,每一個section集中介紹某一類型的試題。在section的開頭一般會有一篇算法介紹,然後有4~5道試題。每一道試題都可以提交USACO服務器評測。與一般的在線評測系統不同的是,USACO不僅會告訴你評測結果,還會提供給你所有的測試數據。另外,在通過一道題之後,還會提供USACO自己撰寫的題解,只是在交上去之後,你的程序並不能被保存,所以不能從上面得到你的源代碼。
USACO的訓練題庫具有非常強的順序性。除非將某一個section中所有試題都通過,你無法得到下一個section的算法介紹和試題。這訓練了信息學競賽選手面對棘手的問題和錯誤時堅持不懈的品質,但也在某種程度上為選手造成了麻煩。
USACO極為重視對算法時間效率與優化水平的考察,很多試題必須要進行非常細緻的優化才能夠通過。幾個典型的例子如Checker Challenge, Cryptcowgraphy, Latin等。
當選手完成所有6個chapter的訓練之後,可以向USACO的總教練申請開放額外的訓練頁進行進一步的訓練。
比賽
一般來說USACO在每年的10,11,12,1,2,3,4月份會組織月賽,一月一次。其中4月份的比賽是USACO Open (公開賽),10月份的比賽是Qualification (資格賽)。每一場月賽都會有三組構成,分別是金組、銀組、銅組,難度依次遞減。進入更高一組一般有兩種方式:在10月份的資格賽中取得較好的成績,或者在某一次月賽中取得該組領先的地位。一般來說選手不會被降組。
通常情況下一次比賽的時間為3~4小時,選手需要完成3~4道題目。選手可以在該次月賽指定的時間範圍(通常是4天,覆蓋一個周末)中的任何一個時間打開題目,並在規定的時間內完成比賽並提交。注意先用一個帳戶打開題目閱讀,然後使用另一個帳戶打開題目提交被明確定義為作弊,在比賽結束之前泄露、發布題目也應該被認為是不妥當的。
每一次比賽的官方版本為英語版。一般在比賽頁面上還會出現其他語言的版本,它們是由已經參加本次月賽的選手進行翻譯的。USACO規則明確聲明它不對除英語外其他版本的正確性與準確性負責。因此選手應該儘可能使用英語版本。
月賽的題目與IOI試題類型大致相同,絕大多數為傳統試題,但也在極少數情況下出現過提交答案類型試題。金組的試題的平均難度不及IOI試題,但比聯賽難度要高,部分試題可以達到甚至超過IOI試題的難度。銀組試題與聯賽提高組的試題難度相當,銅組試題難度與聯賽普及組難度大致相等,有的難度更低。
月賽結束後1~2天你可以通過電子郵箱收到你的程序的評測結果。同時在比賽相應的頁面上你可以找到測試數據、題解、所有參賽選手的程序、所有參賽選手的成績總表以及對比賽的簡要分析、統計與總結。
注意事項
USACO規則中明確規定「直接輸出答案」是作弊行為。換言之,選手在本機上計算得到答案,然後提交一個直接輸出答案的程序是不被允許的(這種技術一般被稱為「打表」)。但是這種行為在絕大多數中學信息學競賽與大學程序設計競賽中都是合法的。
根據USACO規則,程序的運行與結果必須完全是確定性的。換言之,在程序中使用時間函數初始化隨機種子是不被允許的。
選手在參加比賽時可以使用書上、互聯網上或者自己曾經寫過的代碼,無論代碼是否是由選手自己寫的。但是使用這些代碼的時候選手必須將其明確注釋出來,否則被認為是作弊。另外,除非特別聲明,選手必須獨立完成試題,任何其他人的幫助都是被禁止的。
USACO可以接受的語言包括C++, Pascal, C,Java,Python2,Python3。