這篇文章純粹是心血來潮,緣由是去年上傳到github的參賽代碼,前幾天又有兩我的star和fork了。git
記得star熱潮仍是去年4月複賽剛結束的那幾天,厚着臉皮在八大賽區的羣裏發消息求關注,以後就陷入了無限吃灰期。結果,個人開源代碼在前幾天忽然又被挖出來了。github
看了下時間,我想大概是有同窗在準備今年的比賽,嘗試研究去年的題目和開源代碼。說實話,即便你願意花很長時間來準備,效果也有限。面試
由於看往年的題目很容易陷進去,等到真正比賽發現意義不大。另外,不多有花了很長時間研究往年題目才衝進總決賽的參賽者,99%以上的參賽者都是0準備,直接剛。算法
2020軟件挑戰賽即將到來,關於如何充分利用剩餘時間備戰軟挑,衝進複賽圈。但願你看完這篇文章,可以找到一點方向。編程
關於我
素有「死亡賽區」之稱的成渝賽區18年、19年參賽者,18年一輪遊,19年初賽第4,成功苟進複賽學習
今年秋招憑藉筆試綠卡免了機試,並拿到了華爲無線的offer,奈何深圳研發沒坑,與菊廠失之交臂,去了深圳某公仔廠優化
始終堅信:最好的成績可能不是最牛的算法,但確定是對賽題和業務理解最深刻的算法spa
直面軟挑
華爲軟挑,全稱華爲軟件精英挑戰賽,是華爲公司面向全球大學生舉辦的大型軟件競賽。從2015年開始舉辦,已成功舉辦5屆,參賽人數和影響力正在逐年擴大。版本控制
- 往年時間
- 通過幾回的舉辦,大賽基本穩定在3月初報名,上旬發佈初賽賽題同時開啓練習賽
- 3月底線上初賽,第二天公佈複賽名單,發佈複賽賽題同時開啓練習賽
- 4月中旬線下複賽,第二天公佈決賽名單,發佈決賽賽題同時開啓練習賽
- 4月底在深圳舉行線下全國總決賽
- 參賽要求
- 參賽對象:全日制在校大學生
- 參賽語言:C/C++/Java/Python
- 參賽形式:團隊參賽,每隊1-3人,可同校組隊或在同一賽區內跨學校組隊
- 賽程規則
- 分爲區域初賽、區域複賽、全國總決賽
- 區域初賽前32名進複賽
- 區域複賽前4名進決賽
- 全國總決賽共32名隊伍,決出全國8強
- 賽區機制
- 每一年比賽初期採起區域賽,將全國分爲八大賽區
- 京津冀東北賽區,上合賽區,杭廈賽區,江山賽區,成渝賽區,西北賽區,武長賽區,粵港澳賽區
- 西北賽區和成渝賽區 被稱爲每一年的 「死亡賽區」,多是成電和西電太多同窗想去菊廠了
- 全國總決賽獎項
- 一等獎,1隊,獎金¥20萬
- 二等獎,2隊,每隊獎金¥10萬
- 三等獎,5隊,每隊獎金¥5萬
- 最優美代碼獎,1隊,獎金¥1萬
- 區域複賽獎項
- 決勝獎: 4隊,進入全國總決賽,進入優才計劃
- 優勝獎:每賽區第5-36隊,區域36強,面試綠卡(2019年36強改成32強,面試綠卡改成筆試綠卡)
- 入圍獎:每賽區第37-64隊,區域64強,面試綠卡(2019年取消入圍獎)
解析預測
- 賽題解析
- 來源:華爲公司部門輪流出題,基本是公司內部實際業務爲背景
- 算法:大部分賽題集中在圖算法和最優化,也有一部分涉及預測和AI相關
- 目的:比賽會做爲公司產品的一種推廣手段,盲猜2018年與華爲雲有關,2019年與5G車聯網和AI有關,今年或許會與鯤鵬計算平臺或鴻蒙系統有關
- 時間預測
- 基於新型冠肺炎疫情防控形勢,2020華爲軟挑預計會推遲 ,但不會取消舉辦
- 初賽啓動時間可能會在3月底,複賽大機率由線下改成線上比賽,決賽舉辦方式應該會視疫情走勢而定
- 賽題預測
- 爲了保持軟件競賽初心和照顧參賽者,會延續前幾屆的出題方式,預測今年圖算法和最優化相關的可能仍然很大
- 2019年在決賽中首次涉及AI車牌識別,今年AI的比重或許會增長,預測今年初賽重在軟件基礎,複賽會涉及AI,決賽會加深,仍會讓參賽者使用自研平臺
比賽實況
- 比賽難度
- 代碼難度:不一樣於ACM等純算法編程類比賽,難度要低得多,重在軟件編程
- 題目難度:需求任務書是閱讀理解,賽題從業務抽象,須要將題目簡化。19年的複雜規則使人頭禿,堪稱歷史最難
- 比賽規則:練習賽不是絕對,正式比賽才大浪淘金。正式比賽會增長數據規模,複賽和決賽會現場更改需求
- 實際參賽對象
- 學歷:絕大多數是研究生 ,不少人是第一次參加純代碼比賽
- 專業:集中在計算機、軟件、自動化、通訊、數學等專業
- 動機:不少人蔘賽是由於比賽與本身研究方向相近,只有CS專業不這麼想
0準備,如何苟
劃重點!!! 前面介紹了這麼多,接下來的纔是重點,0準備,如何苟進複賽圈!視頻
- 學會抱團
- 千萬不要一我的肝!18年初賽練習賽進入前十,結果正式賽崩了,一我的手忙腳亂,成功一輪遊。
- 好團隊是必勝關鍵。19年組隊,不少奇思妙想都是隊友想出來的,分工配合,最後初賽第4,苟進複賽。
- 儘可能多划水
- 劃羣划水劃論壇。 划水同窗們的福音。混跡八大賽區的羣和論壇,與大佬們交流,你總能找到奇思妙想,我是認真的。
- 釜底抽薪
- 閱讀理解要作好。 最好的成績並非最牛的算法,確定是深刻理解業務與賽題的算法。19年比賽,棋盤狀道路上發車,咱們的算法只是簡單的Dijkstra,但咱們採用了對角線發車,並儘量選擇雙向車道,這種技巧明顯下降了死鎖率。
- 步步爲營
- 先完成,再完美。 比賽一開始,不要考慮過於苛刻的條件和因素。基本思路是魔改基礎算法+tips,作好閱讀理解,先簡化條件,提交一個有成績代碼。在此基礎上,再繼續迭代算法,相信我,你的心態會徹底不同。
- Python大法好
- 首次參賽且0準備的人。18年參賽的時候,我一個C++菜雞幾乎是0基礎,看到輸入輸出文件後直接退縮了。從新現找視頻學Python,當時的學習速度真的很快,學完即用。若是你也是這種狀況,強烈推薦用Python,後期拓展AI也容易得多。
- 逆向工程
- 從判題公式出發。 18年的題目是預測+分配,判題公式是預測準確率*分配率。由於預測原本就不許,不少人先將分配率作到100%,而後反向預測,不少人利用了這一點而苟進複賽。
- 判題器並沒必要須。 19年的題目是車輛路徑規劃,規則巨複雜,爲了不死鎖,不少團隊開始剛判題器,將其嵌入本身的代碼。但判題器並非必須的,不少進入複賽的隊伍,包括咱們,都沒有寫。
- 穩一手
- 霸榜成績穩一手。 若是本身算法達到的霸榜的成績時,不要急於發出來,儘可能苟到正式比賽。你想要霸榜,就要作好被人踢榜的準備。
- 需求更改穩一手。 正式比賽會修改需求,但並非原來的代碼不能用,而是修改後成績更好。因此正式比賽時作好分工,有人改需求,有人繼續嘗試現有代碼。
- 版本控制
- 版本不存檔,比賽火葬場。 正式比賽會修改數據規模和需求,須要修改現有代碼,原來版本頗有可能會被將改崩,或者出現三我的的代碼不一致的狀況。若是由於版本問題達不到理想的成績,就比較遺憾了。
目前如何備戰
2020軟件挑戰賽即將到來,關於如何充分利用剩餘時間備戰軟挑,衝進複賽圈,這裏再分享幾個tips。
- 輸入輸出文件
- 這不是說笑,不少人在看到輸入輸出文件格式後被勸退
- 輸入通常爲txt文件。注意涉及特殊符號、時間格式和文件的末尾空格
- 將這幾年的文件讀取和輸出看一下,準備幾個版本
- 圖算法
- 優化算法
- 預測算法
- AI相關
- 主要是圖像領域,包括但不限於圖像識別,目標檢測,行爲骨骼點檢測
以上算法,並非要你們如今去學懂,學會,這並不現實。
但,至少要把對應的代碼找到,連接保存下來,用到的時候能夠很快找到。
瞭解我
- 關注公衆號【兩猿社】,進入公衆號
- 帶你豐富互聯網相關項目經驗,輕鬆應對校招!!!
- 項目模塊詳細講解,在公衆號內持續更新!!!