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