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