對(duì)編程感興趣,想要走計(jì)算機(jī)道路的同學(xué)們想必對(duì)USACO這個(gè)名字耳熟能詳!在每年藤校錄取生的背景中,也總能看見USACO獎(jiǎng)項(xiàng)的身影。學(xué)霸們已經(jīng)開始為USACO新賽季做準(zhǔn)備了,對(duì)于編程感興趣的同學(xué)想要趕緊行動(dòng)起來!
USACO全稱美國計(jì)算機(jī)奧林匹克競賽,是美國一項(xiàng)面向全球中學(xué)生的信息學(xué)線上競賽,每年會(huì)為IOI(國際信息學(xué)奧林匹克競賽)選拔美國隊(duì)隊(duì)員。
USACO是一項(xiàng)高含金量、極具競爭力的比賽,對(duì)美國大學(xué)申請(qǐng)者來說具有重要意義,尤其對(duì)計(jì)算機(jī)專業(yè)申請(qǐng)者更為重要。越來越多進(jìn)入哈佛、耶魯、麻省理工、普林斯頓、康奈爾等頂尖大學(xué)的學(xué)生都曾參加過USACO,并且表現(xiàn)出色。
??競賽時(shí)間
USACO月賽每年舉行4次,通常在12月、1月和2月和3月舉行,參賽者可以在同一年內(nèi)參加多次比賽。
??報(bào)名方式
面向全球中小學(xué)生開放,同學(xué)只需在官網(wǎng)注冊(cè)成功即可參加(報(bào)名免費(fèi))。
官方網(wǎng)站:http://www.usaco.org
??參賽流程
USACO是一項(xiàng)個(gè)人競賽,支持使用多種編程語言解決問題,包括C++、C、Java、Python等。參賽者需要在每月指定的4天時(shí)間內(nèi)任選一個(gè)時(shí)間完成USACO的題目,每次比賽需要在規(guī)定時(shí)間內(nèi)解決3-4道題目,滿分為1000分。
USACO比賽實(shí)行積分賽制,分為月賽和公開賽兩輪。
新注冊(cè)的選手每場月賽從銅級(jí)開始,根據(jù)做題情況決定是否升級(jí)到下一級(jí)別,分組從低到高分別是銅級(jí)、銀級(jí)、黃金和白金。如果考到1000分,則可以直接升級(jí)到下一級(jí)別;如果未達(dá)到1000分,則需要等到本次月賽結(jié)束后根據(jù)分?jǐn)?shù)排名來確定是否升級(jí)。
題目難度分為銅級(jí)、銀級(jí)、金級(jí)、白金級(jí)4種級(jí)別,難度依次提高。新注冊(cè)的選手從銅級(jí)開始,在規(guī)定的時(shí)間內(nèi)完成3道題目,如果過關(guān),可晉級(jí)到更高級(jí)別,只要學(xué)生實(shí)力足夠,可以連續(xù)晉級(jí)。
?青銅組
面向?qū)W生:首次參加USACO競賽學(xué)生皆為青銅級(jí)。
難度等級(jí):適用于剛學(xué)會(huì)編程的學(xué)生,但是除了排序和二進(jìn)制搜索之類的基本概念之外,沒有任何算法方面的培訓(xùn)。
?白銀組
難度等級(jí):需要基本的問題解決能力和簡單算法(例如:貪心算法,遞歸搜索等),還需了解基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。從白銀級(jí)開始,選手需要尋找更好的算法才能使程序在規(guī)定時(shí)間內(nèi)跑完。
?黃金組
難度等級(jí):需要有一定的算法基礎(chǔ),理解一些抽象的方法(例:最短路徑,動(dòng)態(tài)規(guī)劃),并且對(duì)數(shù)據(jù)結(jié)構(gòu)有比較深的了解??疾焯囟ㄋ惴ǖ恼莆铡?yōu)化意識(shí),用數(shù)學(xué)和邏輯的方法找到最優(yōu)解。
?鉑金組
難度等級(jí):算法的復(fù)雜性和困難程度都提升到更高層次,需要有很高的編程基礎(chǔ),對(duì)算法有深入的了解。部分比賽問題最后的優(yōu)化方案,可能不只一個(gè),得出的答案也不只一個(gè)。
USACO競賽支持語言為C、C++、Java、Pythen和Pascal
1??C語言:
C語言是一種底層語言,執(zhí)行效率高但編碼效率低,目前應(yīng)用相對(duì)較少,主要應(yīng)用于操作系統(tǒng)的底層開發(fā)。
2??C++語言:
C++語言是目前應(yīng)用比較廣泛,也是一個(gè)執(zhí)行效率很高的語言,美國的USACO競賽以及國內(nèi)的NOI都支持使用C++語言,與其他的語言相比,C++的學(xué)習(xí)難度相對(duì)較高。
3??JAVA語言:
JAVA是目前應(yīng)用非常廣泛的一個(gè)語言,執(zhí)行效率低于C++,但是與國際課程中的計(jì)算機(jī)科目學(xué)習(xí)匹配。
4??Python語言:
Python是一門相對(duì)新興的語言,執(zhí)行效率低于C++和JAVA等,但是學(xué)習(xí)難度相對(duì)較低,更適合初學(xué)者學(xué)習(xí),并且也是人工智能方向的優(yōu)選語言。
5??Pascal語言:
目前基本上很少使用,而且只在教學(xué)中有一些應(yīng)用。
根據(jù)年級(jí)選擇
??7年級(jí)之前:
建議學(xué)生可以首先學(xué)習(xí)Python語言,難度低,好入門,并且使用Python語言也可以參加USACO競賽的銀級(jí)和金級(jí),并且具有Python語言基礎(chǔ),后續(xù)學(xué)習(xí)C++等語言也更加好學(xué)。
??到10年級(jí):
建議學(xué)生可以學(xué)習(xí)C++語言,此時(shí)的的學(xué)生具有比較好的數(shù)學(xué)和思維基礎(chǔ),可以更好的掌握C++語言,并且C++對(duì)于參加國內(nèi)的NOI和USACO競賽更高級(jí)別更有幫助。
??長遠(yuǎn)來看:
編程語言的選擇也需要看看未來自己想做什么,比如未來想往系統(tǒng)編程,游戲開發(fā),或者是金融工程等需要高效率的領(lǐng)域發(fā)展,C++是必學(xué)的。如果未來想往machine learning,deep learning,熱門的AI,或是生物統(tǒng)計(jì)發(fā)展,Python會(huì)是個(gè)好選擇。
根據(jù)競賽級(jí)別/難度選擇
??C++語言
C++運(yùn)行速度最快,在白金以上級(jí)別中使用多在集訓(xùn)隊(duì)和國際競賽級(jí)別應(yīng)用多。同時(shí)是國內(nèi)NOI的唯一指定語言。
??Java語言
Java是美國高中AP考試的編程語言,有不少考生考到白金和集訓(xùn)隊(duì),而且在大學(xué)實(shí)習(xí)和工作的選擇機(jī)會(huì)更多。
??Python語言
Python是新興語言,適用于人工智能AI和大數(shù)據(jù)Data science,有更為廣闊的就業(yè)機(jī)會(huì)和前景。目前已經(jīng)有不少考生用Python考到了金級(jí)。
同學(xué)們?cè)趥淇?/span>USACO競賽時(shí),學(xué)會(huì)靈活運(yùn)用算法是備考USACO的重點(diǎn)。
給大家準(zhǔn)備了零基礎(chǔ)同學(xué)備考必讀的五本教材,幫助同學(xué)們掌握這些知識(shí)點(diǎn),整理核心知識(shí)點(diǎn),這五本教材能夠在同學(xué)們銅升銀、銀升金、金升鉑金種起到非常大的作用!
《USACO算法書》零基礎(chǔ)必讀
《編程競賽手冊(cè)》幫助孩子解 決問題,鍛煉編程思維
《哈希表》快速插入和查找
《競賽編程》講究競賽思維和邏輯思維
《算法解 決導(dǎo)論》解 決在編程競賽中的問題
|