O準備如何苟進複賽圈?華爲軟挑開掛指南(附賽題預測)

這篇文章純粹是心血來潮,緣由是去年上傳到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相關
    • 主要是圖像領域,包括但不限於圖像識別,目標檢測,行爲骨骼點檢測

以上算法,並非要你們如今去學懂,學會,這並不現實。

但,至少要把對應的代碼找到,連接保存下來,用到的時候能夠很快找到。


瞭解我

  • 關注公衆號【兩猿社】,進入公衆號
  • 帶你豐富互聯網相關項目經驗,輕鬆應對校招!!!
  • 項目模塊詳細講解,在公衆號內持續更新!!!
相關文章
相關標籤/搜索