USACO,全稱為 United States of America Computing Olympiad (美國計算機奧林匹克競賽)。USACO是美國的中學生信息學奧林匹克競賽,地位等同于中國的NOI系列賽事。
不同的是,USACO面向全球信息學愛好者免費開放,想?yún)⒓拥耐瑢W只要注冊好賬號在規(guī)定時間完成比賽即可。并且題目的質(zhì)量很高,非常適合想要在NOI系列賽事中沖擊高分的選手們。
USACO的訓練場和比賽都堪稱信息學奧賽的經(jīng)典。國內(nèi)不少命題也會參考USACO的歷史原題,例如2019年CSP-J第三題“紀念品”,簡直和USACO 2009年2月場的“Stock Market”一模一樣!因此,有志于在國內(nèi)信息學奧賽中爭金奪銀的選手們想刷題時,強烈推薦USACO!
國內(nèi)信息學奧賽,每年一次,很多選手沒有足夠的賽事經(jīng)驗,在賽場上不能完美發(fā)揮自己的能力,一旦錯失機會,就要再等下一年;但是USACO每年有4場,如果實力足夠,每場都可以從青銅直接打到白金,且其題目難度及質(zhì)量比國內(nèi)信奧完全不逞多讓。對于想要增加信息學賽事經(jīng)驗的選手來說,非常強烈推薦USACO!
打開USACO的官網(wǎng),第一眼便是IOI 2023國際信息學奧賽以及EGOI 2023歐洲女子信息學奧賽的美國隊成員公示信息,華人面孔占據(jù)了很大的比例。
USACO競賽備受美國名校關(guān)注,被哈佛、耶魯、麻省理工、康奈爾、普林斯頓、卡內(nèi)基梅隆等理工牛校認可。每年吸引著眾多申請美國頂尖大學計算機專業(yè)的學生。
例如著名的羅哲正同學,就是通過USACO進入美國國家隊出戰(zhàn)IOI,并獲得了IOI金牌,最終進入麻省理工。
對于計劃留學美國的選手,USACO是非常有含金量的履歷加分項,對于這部分同學,更是推薦USACO!
在USACO比賽中,中國學生可參加三場比賽和US Open公開賽。這些比賽的單場時長一般在3 – 4小時,沒有統(tǒng)一的開始時間和地點限制。選手只要在上述比賽的時間窗口內(nèi)(注意中美時差)登錄官網(wǎng),任選時間在線參賽即可,比賽會從選手進到試題頁后開始計時。
USACO官網(wǎng):http://www.usaco.org/
注冊新賬號時,用英文正確填寫個人信息:昵稱、郵箱、名、姓氏、所在中學、高中畢業(yè)年份(已畢業(yè)/初中則輸入9999)、國籍(中國填寫CHN)。
*小學、初中選手則填寫所在小學或初中,畢業(yè)年份填寫9999。
郵件查收自己的賬號密碼,并登陸官網(wǎng)(24小時內(nèi)首次登陸方可激活,登錄后可修改密碼)。
以下圖示為某次比賽入口,其中第二張圖片的“Start the Contest!”一旦被點擊,選手的比賽用時就會立即倒計時,且無法暫停。
使用本地編譯器(比如Dev C++)寫完代碼后,把頁面滾到最底下,編程語言選擇C++,可以直接復制代碼提交,也可以提交cpp文件。
代碼提交后,如果程序運行正確,則在題目頁面的最上方會出現(xiàn)如下綠色的標識,每個綠色框表示一個測試用例,一般每道題目會有10個測試用例,如下:
同時,封面也會告知每道題的完成情況。下圖為上一賽季第一輪比賽的封面頁,點擊標題即可查看相應題目并提交程序,對于尚未提交的試題,封面頁會對應顯示“Not submitted”;對于已經(jīng)提交的試題,封面頁會對應顯示“Submitted and Graded”。
USACO目前支持C、C++、Pascal、Java、Python等五種編程語言。判分方式和NOI系列賽事相同,即依據(jù)程序所能正確求解的測試點數(shù)量按比例計分。對于各個測試點,一般題目會標注相應的時限要求和內(nèi)存要求(如未具體標注,則C/C++/Pascal默認時限2秒,Java/Python默認時限4秒,內(nèi)存均默認256MB)。
以上為一個題目的評測示例,即最終包含了10個測試點,其中7個正確、3個超時——綠色表示正確,紅色表示錯誤(x表示錯誤答案,t表示時間超限,!表示運行時錯誤或內(nèi)存超限,e表示輸出文件為空,m表示找不到輸出文件)。
USACO允許選手在比賽時間內(nèi)多次提交自己的程序,最終評測和排名以最后一次提交的程序為依據(jù)。選手提交程序時應正確選擇自己所使用的編程語言。
2020年12月起,USACO要求程序使用標準輸入輸出,相應的文件名在題目中會有寫明。但務必注意的是,USACO的評測環(huán)境為UNIX,對于文件名的大小寫是敏感的,同時規(guī)定文件內(nèi)容的每一行均需以換行符’\n’結(jié)尾。
注意學術(shù)規(guī)范,不能團隊做題、不能請教他人、不能查閱書籍、不能借助AI、不能使用自己以前的代碼、不能在比賽期間在線討論或公開自己的代碼,也不能注冊“小號”……總之,務必獨立解題、臨場發(fā)揮,否則會被終生禁賽!
USACO的月賽和公開賽目前設置有Bronze青銅組、Silver白銀組、Gold黃金組、Platinum白金組共4個難度組別。其難度和中國的NOI系列賽事對應如下:
如果是初次參加,那么只能參與青銅組。達到相應分數(shù)之后就能晉級下一個組別,分數(shù)線是根據(jù)整體的分數(shù)按比例劃定的。USACO通常會在賽后一周發(fā)出邀請郵件。但如果能在比賽中獲得滿分,選手就有可能獲得當輪的晉級——此時,如果本輪比賽的時間窗口還沒有關(guān)閉,選手就可以在這一輪繼續(xù)向更高的組別發(fā)起挑戰(zhàn)。