百度之星2021決賽遊記

之前的複賽跌跌撞撞打到了rank23,順利進入到了決賽,左等右等終於在新年伊始迎來了決賽,雖然仍然是線上。

說來慚愧,參加百度之星決賽的主要初衷,其實是決賽的紀念衛衣——之前廣州站的紀念服舒服保暖,讓我很是滿意,雖然最終紀念衛衣其實是一件薄薄的春秋裝。對於決賽本身不同於傳統比賽的形式我有所耳聞,但大概還是由於太懶了,我沒有什麼準備就來到賽場“裸考”。

比賽前夕官方組建了大賽羣,讓我得以正式認識了參賽選手們。佔選手絕大部分的自然是已經在OI中功成名就的競賽生們,他們有的是往年的國家隊選手,有的是已經步入高三/大學的集訓隊選手。望着那一個個我曾在競賽時感到遙不可及的名字,或是在如今的競賽界中仍然響噹噹的名字,說不感到一點畏懼是不可能的。我會是他們的對手嗎?我這樣一個無名之輩也能和他們一較高下嗎?我突然覺得有點惶恐了,我知道這股面對功成名就的強者的怯懦一直深埋在我的內心,但我也知道,我的內心還有另一種同樣強烈的情感——那是一種想要在衆人討論哪些絕頂高手將成爲這場遊戲的獲勝者時,以跳樑小醜的姿態橫空出世粉碎他們的預測的飛揚跋扈的決心。

比賽的開頭照例是百度的宣傳片,也算是爲比賽提供了一點儀式感。開題後題目陌生的敘述方式頗帶給人一些疑惑,好在經過提問和答疑的環節,我還是大致理解了題意。

上午的2小時比賽共兩道題,分別是50和200分。在簡短的觀察後,我發現了第一題實際上就是簡單的高斯消元,於是比較順利地寫了代碼通過了此題雖然中間掛了一發。接下來就是令人有些無從下手的第二題了,好在這是一道提交答案題,我寫了一些代碼開始觀察數據的性質。再將行星根據大小初步分類以後,我發現絕大部分行星的出現位置實際上具有周期性,通過kmp得到位置的週期性,我取得了150左右的還不錯的分數。

不過隨着大家對題目研究的深入,大家的分數也不斷上漲,也出現了不少取得滿分的選手。我發現自己的問題出在對同樣大小的行星區分不夠,於是進一步優化了算法,通過位置出現的已知週期性預測最可能的週期。這樣,我得到了193分左右的分數。

隨後我沒有再取得進步,上午的最終成績我排在rank14。在中午,我從選手的討論中得知所有行星的週期實際上都是一樣的——36,因此只要更簡單的代碼就可以得到滿分了。

經過短暫的午休比賽進入了下半場,是一道300分的大題目。題目在第二題的基礎上,要求我們自行實現策略“射擊”行星,並取得儘量高的分數。比賽的評分方式也頗有意思——每一小時就將選手的最後一次提交兩兩對戰計算選手遊戲分數的相對排名,並公開所有選手比賽的過程,最終根據最後一次對戰確定成績。

在比賽的一開始我對題目的疑問很多,最初的一個小時我只寫了最樸素的隨機化射擊算法,此外一無所獲,也因此毫不幸運地排在衆多隨機算法的中游。不過隨着對題目理解的逐漸深入,我開始着手寫更優秀的算法,並利用第二次全場對戰測試了一下數據的性質,通過我的遊戲過程的表現確定了第三題的數據也是滿足所有行星以36爲週期運動的。這樣問題就容易上手多了——我決定根據給出的位置信息直接得到36幀之後的信息,預算是否能夠射擊它並得到相應的分數,並引入了適當的優化以及隨機化技術。在沒有已計算的目標可以射擊的時刻,我模仿了第二次全場對戰的最優解的方法,向兩條最遠的對角線不斷射擊。

這樣的策略成功在第三次全場對戰中翻身,得到了第11名。隨後我也沒有從根本上優化我的算法,只是調整了一下參數令其對樣例的分數更高,就這樣比賽結束了。

最後的頒獎儀式又是百度的宣傳片,同時介紹了到場的嘉賓。終於到了揭曉獲獎名單的時刻了,我的表現如何呢?綜合上午的表現和下午最後一次全場對戰的成績,我覺得自己或許還不錯,但畢竟不能確定。最終成績揭曉,我得知我下午的最終對戰仍然位於第11名,同時取得了總分第7的成績,獲得優勝獎(前10)吸走5000獎金。

得到這樣的獎項第一反應自然是高興和興奮,不過這一陣興奮過去後,湧現得更多的反倒是欣慰和釋然。時光荏苒,我已經度過了那段以榮譽作爲人生的最高追求的熱血的年紀,開始眺望更高更遠的生活,並嚮往着成爲一個背對着繁重的生活壓力,仍能打開屬於自己的一片天空的自在的遊行者。未來的生活不只會有競賽和榮譽,也有着許多我未曾接觸過、也或許將會喜歡上的新鮮的事物。或許日後我會懷念起這樣簡單而純粹的生活吧,但此時此刻,我也同樣對我的未來給予熱切的期望:願我能成爲理想中的遊行者,深藏起在我看來還算彌足珍貴的功與名,盡情地享受光怪陸離的人生,勇於追求更多的可能。也許未來有一天,我的人生經歷也能爲他人提供一些憧憬和希望,那自然是我無比榮幸的事了。

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