2020中興捧月算法大賽參賽總結

前言

年初因爲疫情的原因沒辦法返校,一直在家待到了5月下旬。期間,看到了學校羣裏有人宣傳2020年的中興算法賽,就去看了看幾個賽題。因爲參加過2019年華爲的軟挑,因此看到迪傑斯特拉賽道的賽題有種熟悉感,因此決定試一下這個賽道,沒想到誤打誤撞進入了決賽,真是意外之喜。這裏做一下參賽總結。

初賽

初賽賽題是一道帶約束的信道資源規劃題,節點之間有鏈路相連,且鏈路本身也被劃分爲多條通道,每個通道都從1開始編號(類比道路上有多條車道)。根據輸入數據的要求,在節點與節點之間建立起一定帶寬的信道,信道的建立需要消耗帶寬資源,且根據建立信道時所選擇的通道,按照給定規則消耗節點內的人工資源。資源約束主要有兩點:

  • 節點之間的鏈路所轄的各個通道的帶寬有限
  • 每個節點內的人工資源有限

題目的目標是根據輸入的要求,在有限的資源下,儘可能多的規劃出信道。當然,規劃失敗的信道數量以及容量越多,得分也就越低。

初賽的題解我記錄在了這篇博客中:2020中興捧月算法大賽迪傑斯特拉賽道初賽題解。最後跑出了95.132的成績。在解初賽題的過程中,我覺得最重要的就是理解題目,並始終緊盯目標。從我們期待達到什麼樣的目標導出如果想要達到目標那麼規劃出的信道應該具有怎樣的特點,然後纔是實現的細節。

初賽的收貨是鍛鍊了編程能力,也學到了一些有關圖的算法。

複賽

複賽沒有編碼環節,具體的形式是視頻面試。這個面試跟找工作的時候面試差不多,不過與面試官的交流主要還是圍繞着初賽賽題。主要的問題如下:

  1. 自我介紹
  2. 初賽的解題思路及賽題相關的一些問題
  3. 介紹一個自己做過的項目,這個項目中最困難的地方
  4. 有什麼想問的問題

最後我問了面試官他所在部門的情況,他們主要是做網絡調度相關的算法。因爲我做嵌入式軟件比較多,和他們部門在技術棧上不太契合,所以我問了面試官怎麼看待技術棧不是很匹配的求職者,可能因爲我是應屆生吧,面試官回答的大意是主要看能力,技術棧不匹配也是有機會的。

複賽的收穫主要是在秋招之前提前感受了一下面試,算是爲秋招做個準備吧。

決賽

決賽的要點是尋路算法的優化,從算法複雜度、工程實現等方面優化算法,使得在給定的測試用例下算法的執行時間越少越好。由於給的用例數量較大,因此最後的目標也就是在限定的時間內,通過的用例越多越好。最後的結果不理想,提交上去的代碼出了BUG。在本地測試的時候,限定時間範圍內跑了10萬多個用例沒有出問題,因此我也就沒有把時間限制放開跑所有的用例,後來發現跑所有21萬個用例有兩個沒有過。這也算是一個經驗教訓吧,在軟件開發的過程中嚴謹的態度是很重要的,尊重每一個用例^_^!!

總的來說,這次比賽收穫還是比較大的,感謝中興提供了這個平臺,同時感謝賽題組的各位老師以及工作人員對我們的照顧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章