光刷题不参加这些算法竞赛?太亏了!
前言
大家好,我是bigsai。這篇文章給大家介紹算法競(jìng)賽,如果有幫助還請(qǐng)一鍵三連支持一下!
最近有些學(xué)妹問(wèn)我咱們計(jì)算機(jī)專業(yè)的有哪些比賽可以參加呢?我眉頭一皺,想了想咱們計(jì)算機(jī)專業(yè)競(jìng)賽好像確實(shí)蠻多的,在這里給捋一捋。
競(jìng)賽的目的有很多,有的是為了參加競(jìng)賽提高個(gè)人能力,有的是為了拿到榮譽(yù)為自己保研、就業(yè)、考研加分,還有的是為了獎(jiǎng)金。
競(jìng)賽的類型也有好多種,有算法類、工程類、科研類的,不同競(jìng)賽的難度不同、社會(huì)認(rèn)可度不同。根據(jù)自身?xiàng)l件,選擇合適的比賽參與歷練自己,也算是拓寬自己的認(rèn)識(shí)面,以后和人聊起來(lái)也能說(shuō)上兩嘴。
今天主要給大家介紹一些算法類競(jìng)賽。算法類競(jìng)賽大家聽(tīng)過(guò)或者接觸的比較多,有些競(jìng)賽獎(jiǎng)項(xiàng)的榮譽(yù)能夠讓自己終身受譽(yù)(不夸張),不過(guò)算法類競(jìng)賽一般都是榮譽(yù)型更多,獎(jiǎng)金很少有。
下面會(huì)介紹一些賽制和比賽,在介紹比賽之前,先把一些專業(yè)術(shù)語(yǔ)搞清楚:
AC:Accept,通過(guò)
AK:All-Killed,AC了所有題
爆零:一題都沒(méi)通過(guò)(一般賽前自嘲這次又要爆零了)
WA:Wrong Answer,答案錯(cuò)誤
RE:Runtime Error,運(yùn)行錯(cuò)誤(通常是數(shù)組越界、爆棧了)
CE:Compilation Error,編譯錯(cuò)誤,即使很自信也要本地編譯成功后再提交。
TLE:Time Limit Exceeded,時(shí)間超限(遇到的最大難題之一,可能是死循環(huán)了,也可能是算法復(fù)雜度太高需優(yōu)化,算法復(fù)雜度和給定時(shí)間心中也要有個(gè)小數(shù))
MLE:Memory Limit Exceeded,內(nèi)存超限(通常是數(shù)組開(kāi)大了,數(shù)組能開(kāi)多大心里大概有個(gè)數(shù))
PE:應(yīng)該是格式錯(cuò)誤?不太確定
OLE:Output Limit Exceeded,超出輸出限制
UKE:Unknown Error,出現(xiàn)未知錯(cuò)誤。
三大賽制
在介紹比賽之前,要先說(shuō)一下賽制,其中ACM賽制要求是最高的,錯(cuò)一點(diǎn)整個(gè)題就不得分,所以每道題要采取適合的方法,而OI和IOI則是通過(guò)測(cè)試樣例數(shù)量給分,如果題目不會(huì)最優(yōu)解混部分分也可以得到不錯(cuò)的成績(jī)(這也是暴力杯由來(lái)根本原因)。
ACM賽制:現(xiàn)場(chǎng)判題,每道題都有多個(gè)測(cè)試點(diǎn),每道題必須通過(guò)了所有的測(cè)試點(diǎn)才算通過(guò)。不限制提交次數(shù),但沒(méi)通過(guò)的話會(huì)有罰時(shí),僅以最后一次提交為準(zhǔn)。比賽過(guò)程中一般可以看到實(shí)時(shí)排名,通過(guò)題數(shù)相同的情況下按照答題時(shí)間+罰時(shí)來(lái)排名。
ACM賽制的比賽:ICPC、CCPC、codeforces比賽、牛客小白賽練習(xí)賽挑戰(zhàn)賽、傳智杯等。
OI賽制:每道題提交之后都沒(méi)有任何反饋,每道題都有多個(gè)測(cè)試點(diǎn),根據(jù)每道題通過(guò)的測(cè)試點(diǎn)的數(shù)量獲得相應(yīng)的分?jǐn)?shù)。每道題不限制提交次數(shù),僅以最后一次提交為準(zhǔn)。比賽過(guò)程中看不到實(shí)時(shí)排名,賽后按照總得分來(lái)排名。
OI賽制的比賽:NOI全國(guó)青少年信息學(xué)奧林匹克競(jìng)賽、CCF CSP、藍(lán)橋杯、牛客OI賽等等。
IOI賽制:現(xiàn)場(chǎng)判題,甚至可以實(shí)時(shí)看到自己每道題得了多少分,但看不到錯(cuò)誤的測(cè)試樣例。每道題都有多個(gè)測(cè)試點(diǎn),根據(jù)每道題通過(guò)的測(cè)試點(diǎn)的數(shù)量獲得相應(yīng)的分?jǐn)?shù)。每道題不限制提交次數(shù),提交錯(cuò)誤沒(méi)有任何懲罰,僅以最后一次提交為準(zhǔn),按照總得分來(lái)排名。IOI賽制是結(jié)合了OI賽制和ACM賽制的特點(diǎn)。
IOI賽制的比賽:PAT、團(tuán)體程序設(shè)計(jì)天梯賽、CCF CCSP、洛谷月賽。
ICPC
ICPC名氣真是太大了,提起IPCP估計(jì)大家都知道:三人一隊(duì)一個(gè)電腦,英文題目,五小時(shí)內(nèi)A一道題掛一個(gè)氣球……
國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽(英文全稱:International Collegiate Programming Contest(簡(jiǎn)稱ICPC)),這個(gè)比賽很久以來(lái)都是ACM贊助的,以前都叫ACM/ICPC,簡(jiǎn)稱ACM,現(xiàn)在也依然大部分人把ICPC叫做ACM。但在2018年以后ACM(美國(guó)計(jì)算機(jī)協(xié)會(huì))就不是ICPC的主要贊助了,后來(lái)JetBrains對(duì)其贊助,目前是AWS education、華為、JetBrains三家對(duì)其主要贊助。
而早期的圖標(biāo)也成為一個(gè)回憶了,那時(shí)候ACM、IMB都是金主贊助商。
這個(gè)比賽含金量是非常高的,即使近些年含金量有些下滑,但它依舊算法領(lǐng)域含金量最高的比賽,你經(jīng)常看到某個(gè)算法課程的作者:xx,20xx年ACM亞洲xx區(qū)域賽金牌。一聽(tīng)金牌,大家就覺(jué)得:臥槽,大佬講課,這個(gè)課程質(zhì)量肯定穩(wěn)了,買買買!
不過(guò)ICPC也有省賽,亞洲區(qū)域賽,亞洲決賽( EC-Final)和世界總決賽(World Finals),一般來(lái)說(shuō)區(qū)域賽含金量還是比較受認(rèn)可的,當(dāng)然中國(guó)只有強(qiáng)校的隊(duì)才能進(jìn)World Finals。
對(duì)于普通同學(xué)的焦點(diǎn)來(lái)說(shuō)都是國(guó)內(nèi)的幾場(chǎng)區(qū)域賽。ICPC的門檻比較高,每個(gè)學(xué)校一般有幾只隊(duì)伍,有的學(xué)校可能只有一兩只隊(duì)伍(每個(gè)隊(duì)伍一年最多打兩場(chǎng)區(qū)域賽),具體名額分配要看各個(gè)區(qū)域賽組織文件的,所以如果想?yún)⒓覫CPC光想還是沒(méi)用的,還要自身實(shí)力夠硬能夠獲得學(xué)校教練認(rèn)可,讓你組隊(duì)訓(xùn)練給你名額。
如果你高中有IO競(jìng)賽經(jīng)驗(yàn)或者大一比較喜歡算法刷題,那么強(qiáng)烈推薦努力嘗試一波,但如果你目前都大二大三但是算法基礎(chǔ)還是很差,那并不是建議你在這上花太多時(shí)間,如果結(jié)果只是打鐵那花費(fèi)那么多時(shí)間在這上其實(shí)還是有點(diǎn)不值當(dāng)?shù)?#xff0c;ICPC是屬于算法精英的比賽而不是普通人的比賽。雖說(shuō)學(xué)習(xí)算法很能提升個(gè)人能力,考研、就業(yè)也有很大幫助,但I(xiàn)CPC的難度通常遠(yuǎn)大于面試力扣、劍指offer,可以但沒(méi)必要。
賽制:ACM賽制
**題量:**7到13個(gè)問(wèn)題(編程題)
時(shí)長(zhǎng):5小時(shí)
編程語(yǔ)言:C/C++、Java和Python
獎(jiǎng)項(xiàng)設(shè)置:金、銀、銅獎(jiǎng)的頒獎(jiǎng)比例參加隊(duì)數(shù)的 10%, 20% 和 30%,其余我們親切的稱為打鐵。
大賽官網(wǎng):https://icpc.global/
其他:一般本科,理論上研一最大年級(jí),三人一隊(duì),A一道題自己多一個(gè)氣球。
CCPC
中國(guó)大學(xué)生程序設(shè)計(jì)競(jìng)賽(China Collegiate Programming Contest, CCPC)這個(gè)比賽是中國(guó)的,很多人把它和ICPC弄混淆,它整體來(lái)說(shuō)跟ICPC很像(賽制、規(guī)則),但CCPC的歷史比較短,2015年才開(kāi)始第一屆所以有些院校還不太認(rèn)這個(gè)比賽(甚至不報(bào)銷),但目前賽制也很完善也得到大家認(rèn)可。
想?yún)⒓拥脑捚鋵?shí)門檻目前來(lái)說(shuō)跟ICPC有些類似,學(xué)校可以參加的名額一部分網(wǎng)絡(luò)賽爭(zhēng)取,一部分固定名額,還有其他承辦、出題等等其他因素也會(huì)獎(jiǎng)勵(lì)一些名額,對(duì)于學(xué)生來(lái)說(shuō),當(dāng)然也是只能先進(jìn)校隊(duì)才能有機(jī)會(huì)參加比賽了。
對(duì)于ICPC/CCPC如果自己還很年輕,并且自己有追求想?yún)⒓拥脑?#xff0c;可以打聽(tīng)打聽(tīng)校隊(duì)和自己院校情況,努力刷題打比賽參加學(xué)校程序設(shè)計(jì)大賽證明自己。
其規(guī)則和ICPC相似。
大賽官網(wǎng):https://ccpc.io/
其他:只允許本科、專科
藍(lán)橋杯
藍(lán)橋杯大家可能更熟悉一些,因?yàn)榭赡芎芏嗳硕紖⒓舆^(guò),它是一個(gè)比較親民化的算法競(jìng)賽(這里就不說(shuō)非點(diǎn)子類的了),藍(lán)橋杯大賽是工業(yè)和信息化部人才交流中心舉辦。
藍(lán)橋杯是個(gè)人賽,個(gè)人賽軟件類分為:C/C++大學(xué)研究生組,C/C++大學(xué)A組,C/C++大學(xué)B組,C/C++大學(xué)C組,Java大學(xué)研究生組,Java大學(xué)A組,Java大學(xué)B組,Java大學(xué)C組,Python大學(xué)組共9個(gè)組別。研究生只能報(bào)研究生組。一本院校(985、211)本科生只能報(bào)大學(xué)A組以上組別。其它本科院校本科生可報(bào)大學(xué)B組及以上組別。其它高職、高專院校可自行選擇報(bào)任意組別。每位選手只能申請(qǐng)參加其中一個(gè)組別的競(jìng)賽。各個(gè)組別單獨(dú)評(píng)獎(jiǎng)。藍(lán)橋杯的分組競(jìng)賽方式,讓平時(shí)被“學(xué)霸”打壓的普通學(xué)生,也能有獲得感,有進(jìn)步感,給更多學(xué)生指引了努力的方向。
在比賽的時(shí)候藍(lán)橋杯是OI賽制,也就是提交答案之后賽后評(píng)判,根據(jù)通過(guò)的樣例數(shù)量給分。這樣的賽制,放寬了對(duì)于編程速度的要求,對(duì)于大部分選手來(lái)說(shuō)更友好一點(diǎn),可以更從容地解決問(wèn)題,但也可能有些錯(cuò)誤被疏忽不知道已經(jīng)錯(cuò)了。
藍(lán)橋杯報(bào)名的話有個(gè)人和院校兩種,學(xué)校報(bào)名:自己注冊(cè),自己提交申請(qǐng),選擇學(xué)校報(bào)名,等待學(xué)校繳費(fèi)(很多學(xué)校要讓學(xué)生先交錢,獲獎(jiǎng)之后再報(bào)銷的)。而自己報(bào)名的話就是自己完成一系列流程,但是有的學(xué)校不允許學(xué)生擅自個(gè)人報(bào)名要走學(xué)校通道的也要注意一下。
很多人對(duì)藍(lán)橋杯的含金量看法不一,ACM大佬可能覺(jué)得這個(gè)比賽沒(méi)啥含金量,但是不同人有不同的追求吧,沒(méi)有ACM競(jìng)賽機(jī)會(huì)的藍(lán)橋杯就是一個(gè)學(xué)習(xí)算法、證明自己的另一個(gè)非常好的方式。省賽的話確實(shí)含金量一般,省一才有資格進(jìn)入國(guó)賽,拿了省一能證明你有兩下子,在國(guó)賽如果能拿國(guó)一或者國(guó)二其實(shí)還是有含金量的。
賽制:OI賽制
題量:5道填空題+5道編程題,填空題一般也是需要編程求解答案,滿分150分。
時(shí)長(zhǎng):4小時(shí)
編程語(yǔ)言:C/C++、Java和Python
獎(jiǎng)項(xiàng)設(shè)置:
省賽:省賽每個(gè)組別設(shè)置一、二、三等獎(jiǎng),比例分別為10%、20%、30%,總比例為實(shí)際參賽人數(shù)的60%,零分卷不得獎(jiǎng)。省賽一等獎(jiǎng)選手獲得直接進(jìn)入全國(guó)總決賽資格。
國(guó)賽:個(gè)人賽根據(jù)相應(yīng)組別分別設(shè)立一、二、三等獎(jiǎng)及優(yōu)秀獎(jiǎng)。其中,一等獎(jiǎng)不高于5%,二等獎(jiǎng)?wù)?0%,三等獎(jiǎng)不低于25%,優(yōu)秀獎(jiǎng)不超過(guò)50%。
國(guó)賽都是省一選手參加的,并且一二三等獎(jiǎng)獲獎(jiǎng)比例更加苛刻,所以這個(gè)含金量還是有的。
大賽官網(wǎng):https://dasai.lanqiao.cn/
其他:個(gè)人賽,需要注意分組自己所能報(bào)名的組別
天梯賽
天梯賽是個(gè)團(tuán)體賽,每個(gè)隊(duì)不超過(guò)10人,題目的話更親民一些,難度分3個(gè)梯級(jí):基礎(chǔ)級(jí)、進(jìn)階級(jí)、登頂級(jí)。以個(gè)人獨(dú)立競(jìng)技、團(tuán)體計(jì)分的方式進(jìn)行排名。
當(dāng)然天梯賽獎(jiǎng)項(xiàng)設(shè)置也比較多,這里就不進(jìn)行詳細(xì)介紹了,可以到官網(wǎng)去查看獎(jiǎng)項(xiàng)設(shè)置,但很多學(xué)校算法氛圍不是很濃厚或者沒(méi)人帶隊(duì)沒(méi)有隊(duì)伍參加,這種有意思的賽制其實(shí)還是建議參加體驗(yàn)一下的,自己為團(tuán)隊(duì)奉獻(xiàn)力量。
賽制:IOI賽制
**題量:**基礎(chǔ)級(jí)設(shè) 8 道題,進(jìn)階級(jí)設(shè) 4 道題,登頂級(jí)設(shè) 3 道題。
時(shí)長(zhǎng):3小時(shí)
編程語(yǔ)言:C、C++ 和 Java。
獎(jiǎng)項(xiàng)設(shè)置:競(jìng)賽的 3 個(gè)組別分別設(shè)置全國(guó)高校獎(jiǎng)、全國(guó)團(tuán)隊(duì)獎(jiǎng)、個(gè)人特等獎(jiǎng)、個(gè)人優(yōu)勝獎(jiǎng)、特別獎(jiǎng)、成功參賽獎(jiǎng);同時(shí)各省設(shè)置省內(nèi)高校獎(jiǎng)和團(tuán)隊(duì)獎(jiǎng)。
大賽官網(wǎng):https://gplt.patest.cn/teams
其他:需本科生或者專科生
CCF CSP認(rèn)證
這個(gè)中國(guó)計(jì)算機(jī)學(xué)會(huì)組織的一個(gè)認(rèn)證,畢竟中國(guó)計(jì)算機(jī)學(xué)會(huì)也是個(gè)像模像樣的組織,拉攏了一些高校達(dá)成一些一致,高校有的保研加分、分?jǐn)?shù)可以抵考研復(fù)試機(jī)試分?jǐn)?shù)、研究生CSP分?jǐn)?shù)可以評(píng)獎(jiǎng)學(xué)金加分等等手段拉取一些報(bào)名參賽。
CCF CSP認(rèn)證的局域性色彩很濃厚。如果你的學(xué)校對(duì)CCF CSP有要求或者你要報(bào)考的學(xué)校對(duì)CCF CSP有政策,那你一定得報(bào)名一波哇!
但是客觀來(lái)說(shuō)普及度和認(rèn)可度,確實(shí)還不太行。
賽制:OI賽制
題量: 5道題,都是編程題,近些年難度有所增加。
時(shí)長(zhǎng):4小時(shí)
編程語(yǔ)言:C/C++、Java和Python
獎(jiǎng)項(xiàng)設(shè)置:分?jǐn)?shù)排名,一般300分作為一個(gè)衡量點(diǎn)就不錯(cuò)了。滿分的話很少每次只有少數(shù)幾個(gè)人。
大賽官網(wǎng):https://www.cspro.org/
其他:個(gè)人賽無(wú)分組,是否大學(xué)生都可參加,CSP成績(jī)好的可以參加CCSP。
PAT
PAT: 這是浙大組織的比賽,目的我就不說(shuō)了,通過(guò)一些校企合作讓大家參加,不過(guò)承認(rèn)的企業(yè)其實(shí)也不是很多。但是如果你考浙大那這PAT嘎嘎香啊,因?yàn)镻AT的甲級(jí)分?jǐn)?shù)可以直接抵浙大復(fù)試機(jī)試的分?jǐn)?shù)。
不過(guò)就當(dāng)影響力來(lái)說(shuō),因?yàn)槭钦愦蠼M織的比較偏民間化,并且組織時(shí)間也不是很長(zhǎng),認(rèn)可度暫時(shí)還沒(méi)那么高。還有一點(diǎn)PAT對(duì)Java選手不太友好,因?yàn)椴还苁裁凑Z(yǔ)言時(shí)間都是一樣的(不像某些比賽Java二倍時(shí)間),所以面對(duì)大量數(shù)據(jù)的時(shí)候,記得不能用Scanner,要用BufferedReader等快速輸入輸出(自行搜索一下Java快速輸入輸出)。
賽制:IOI賽制
題量:頂級(jí)(英文,3題)、甲級(jí)(英文,4題)、乙級(jí)(中文,5題)。滿分都是100分。
時(shí)長(zhǎng):4小時(shí)
編程語(yǔ)言:C/C++、Java和Python等多種語(yǔ)言,但Java等語(yǔ)言很慢,千萬(wàn)別用Scanner。
獎(jiǎng)項(xiàng)設(shè)置:分?jǐn)?shù)名次,甲級(jí)90分以上的話就不錯(cuò)了
大賽官網(wǎng):https://www.patest.cn/
其他:個(gè)人無(wú)分組,是否大學(xué)生都可參加
其他
除了上面稍微大一點(diǎn)的,還有一些機(jī)構(gòu)公司最近也開(kāi)始組織比賽(例如傳智播客)這些暫時(shí)就不列舉了,還有一些其他網(wǎng)絡(luò)賽比如百度之星(每年暑假)等,還有各個(gè)平臺(tái)、學(xué)校開(kāi)放自己的比賽就要自己去找啦,不過(guò)在這里推薦一些刷題平臺(tái)。當(dāng)然OJ很多,這里簡(jiǎn)單列舉一些大家熟知的。
杭電oj:http://acm.hdu.edu.cn/ 老牌oj,題量挺多
北大oj:http://poj.org/ 老老牌oj(jdk好像支持1.5……)
牛客競(jìng)賽:https://ac.nowcoder.com/acm/home 每周有很多周賽組織
Codeforces:http://codeforces.com/ 全球最大的競(jìng)賽平臺(tái),俄羅斯網(wǎng)站,有不同難度比賽
Atcoder:https://atcoder.jp/ 日本競(jìng)賽平臺(tái)
計(jì)蒜客:https://nanti.jisuanke.com/oi/ 有些題庫(kù)和比賽會(huì)在上舉行
洛谷:https://www.luogu.com.cn/ 中學(xué)生打OI用的更多,也很適合算法初學(xué)者
vjudge:https://vjudge.z180.cn/ 整合一系列題目模擬組成題庫(kù)(本質(zhì)是個(gè)爬蟲(chóng))
力扣:https://leetcode-cn.com/problemset/all/ 面向工作黨強(qiáng)烈推薦,也有周賽
藍(lán)橋杯練習(xí)系統(tǒng):http://lx.lanqiao.cn/problemsets.page 適合刷藍(lán)橋杯試題同志
PTA: https://pintia.cn/ PAT考題和天梯賽考題oj
最后說(shuō)一下,并不是所有算法競(jìng)賽都適合你,有些算法競(jìng)賽只是特定渠道認(rèn)可度很高,并且報(bào)名費(fèi)確實(shí)不菲(每年舉行好幾次的被噴圈錢是有原因的),所以如果有條件可以試一試ICPC/CCPC,如果沒(méi)條件努力沖沖藍(lán)橋杯總是可以的吧!如果想準(zhǔn)備某個(gè)比賽,要自己更詳細(xì)了解比賽時(shí)間、學(xué)校是否有相關(guān)安排、比賽題目風(fēng)格等更加具體的信息,這里就不做那么詳細(xì)的介紹啦!
加油沖沖沖,今天的算法競(jìng)賽就先介紹到這里,工程類比賽比較多也比較雜,后面有空的話可以給大家梳理一波。
近期推薦閱讀:
師兄刷題筆記、算法小抄、面試突擊版必備資源,幫你走上人生巔峰
本以為哈夫曼樹(shù)、哈夫曼編碼很難,結(jié)果……
關(guān)于作者:bigsai,專注于數(shù)據(jù)結(jié)構(gòu)與算法、Java方面知識(shí)分享,歡迎關(guān)注同名公眾號(hào)【bigsai】,堅(jiān)持輸出干貨,如果有學(xué)習(xí)、考研、選擇等問(wèn)題歡迎交流!
總結(jié)
以上是生活随笔為你收集整理的光刷题不参加这些算法竞赛?太亏了!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 排个课表学会了拓扑排序!有点意思
- 下一篇: 写给小白看的硬核递归(低调点,当回小白)