發(fā)布時(shí)間:2023-07-29 10:27:02
編輯:小妹來(lái)源:網(wǎng)絡(luò)瀏覽:次
美國(guó)USACO計(jì)算機(jī)競(jìng)賽是美國(guó)一項(xiàng)面向中學(xué)生的信息學(xué)競(jìng)賽,USACO極為重視對(duì)算法時(shí)間效率與優(yōu)化水平的考察,很多試題必須要進(jìn)行非常細(xì)致的優(yōu)化才能夠通過(guò)。相比其他學(xué)科競(jìng)賽,參加USACO至少有三次月賽和一次公開(kāi)賽機(jī)會(huì)晉級(jí),可最大程度、最低成本提升學(xué)術(shù)背景,對(duì)海外升學(xué)非常有幫助。
登錄USACO官網(wǎng)http://www.usaco.org/,
點(diǎn)擊Register for New Account按鈕,注冊(cè)新賬戶(hù)。
注冊(cè)后填寫(xiě)個(gè)人信息:
注冊(cè)結(jié)束后,在綁定的郵件中查收自己的賬號(hào)和默認(rèn)密碼。并如下圖登陸官網(wǎng)(24小時(shí)內(nèi)首次登陸方可激活,登錄后可修改密碼),并點(diǎn)擊“Login”。
然后就可以參加比賽啦!選手需要在比賽開(kāi)放期間進(jìn)入競(jìng)賽頁(yè)面參與比賽。如下圖所示,點(diǎn)擊“Start the Contest!”鍵即可開(kāi)始比賽。選手的比賽用時(shí)就會(huì)立即倒計(jì)時(shí),且無(wú)法暫停。
進(jìn)入題目后,點(diǎn)擊紅框處選擇Chinese(zh),可以切換題目語(yǔ)言為中文:
完成之后就可以提交啦!比賽時(shí)需要按要求在自己的編程環(huán)境(例如DEV-C++)中完成題目,并提交cpp文件。
比賽會(huì)在時(shí)限過(guò)后自動(dòng)結(jié)束(如已經(jīng)獲得滿分,則可以手動(dòng)提前結(jié)束),只需在比賽結(jié)束前確保提交過(guò)已經(jīng)完成的題目即可。
USACO競(jìng)賽有4個(gè)級(jí)別,銅級(jí),銀級(jí),金級(jí),白金級(jí)。每個(gè)級(jí)別代表不同的編程技能水平。新注冊(cè)的選手從銅級(jí)開(kāi)始,在規(guī)定的時(shí)間內(nèi)完成3道題目,如果過(guò)關(guān),可晉級(jí)到更高級(jí)別。
面向?qū)W生:首次參加USACO競(jìng)賽學(xué)生皆為青銅級(jí)。
難度等級(jí):適用于剛學(xué)會(huì)編程的學(xué)生,但是除了排序和二進(jìn)制搜索之類(lèi)的基本概念之外,沒(méi)有任何算法方面的培訓(xùn)。
難度等級(jí):需要基本的問(wèn)題解決能力和簡(jiǎn)單算法(例如:貪心算法,遞歸搜索等),還需了解基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。從白銀級(jí)開(kāi)始,選手需要尋找更好的算法才能使程序在規(guī)定時(shí)間內(nèi)跑完。
難度等級(jí):需要有一定的算法基礎(chǔ),理解一些抽象的方法(例:最短路徑,動(dòng)態(tài)規(guī)劃),并且對(duì)數(shù)據(jù)結(jié)構(gòu)有比較深的了解。
難度等級(jí):需要有很高的編程基礎(chǔ),對(duì)算法有深入的了解。部分比賽問(wèn)題最后的優(yōu)化方案,可能不只一個(gè),得出的答案也不只一個(gè)。
準(zhǔn)備一些模板,用于復(fù)制/粘貼,以讀取輸入和寫(xiě)入輸出。準(zhǔn)備一些常用算法的模板作為參考。使用你自己的模板,避免抄襲別人的模板! 在點(diǎn)擊開(kāi)始按鈕之前,將 您的IDE或編程環(huán)境設(shè)置好。
在比賽中,程序可能會(huì)崩潰,產(chǎn)生錯(cuò)誤的輸出,因此,學(xué)生熟悉調(diào)試界面是至關(guān)重要的。由于錯(cuò)誤往往是編譯錯(cuò)誤、崩潰、超時(shí)或錯(cuò)誤的答案,學(xué)生可以使用這個(gè)大綱來(lái)開(kāi)始調(diào)試。
如果學(xué)生找不到哪一行不能編譯,試著使用二進(jìn)制搜索方法刪除代碼部分。使用具有自動(dòng)導(dǎo)入庫(kù)的IDE,并熟悉自動(dòng)完成的鍵盤(pán)快捷鍵。檢查異常類(lèi)型(空指針、除以0、無(wú)限遞歸、內(nèi)存不足?)如果沒(méi)有異常,嘗試上傳避免可能的錯(cuò)誤的代碼,并使用二進(jìn)制搜索方法找出可能崩潰的代碼區(qū)域。
注意數(shù)組實(shí)例化的問(wèn)題。盡量在程序開(kāi)始時(shí)就把所有東西實(shí)例化。試著計(jì)算運(yùn)行了多少操作。如果有必要,可以使用變量。嘗試用標(biāo)準(zhǔn)的預(yù)分配數(shù)組代替List或Map這樣的數(shù)據(jù)結(jié)構(gòu)。對(duì)于更高層次的問(wèn)題,檢查是否可以進(jìn)行動(dòng)態(tài)編程或記憶化。
檢查你的代碼與正確答案之間的間距和格式是否一致。檢查整數(shù)溢出的情況。檢查是否有NaN或未定義的整數(shù)運(yùn)算。如果有時(shí)間,試著做你自己的自定義輸入,并將輸出與你的預(yù)期輸出進(jìn)行比較。你甚至可以比較作為中間計(jì)算的具體數(shù)值。
USACO重點(diǎn)考察學(xué)生的算法分析能力和代碼編寫(xiě)能力。不管考察哪個(gè)能力,學(xué)生都要靠大量做題、經(jīng)驗(yàn)總結(jié)、舉一反三等等專(zhuān)業(yè)訓(xùn)練來(lái)達(dá)到。所以參加USACO競(jìng)賽,有針對(duì)性的刷題訓(xùn)練、USACO競(jìng)賽豐富的導(dǎo)師指導(dǎo)是非常重要的!
課程名稱(chēng) |
班級(jí)人數(shù) |
課時(shí)數(shù) |
USACO競(jìng)賽銅升銀 |
3-6人 |
30H |
USACO競(jìng)賽銀升金 |
3-6人 |
30H |
USACO競(jìng)賽金升白金 |
3-6人 |
60H |
USACO競(jìng)賽培訓(xùn)全程班 |
3-6人 |
60H |
微信咨詢(xún)
支付二維碼