第97章 實用主義

投票推薦 加入書籤 小說報錯

  第97章 實用主義

  計算中心的機房門前,洛北和何子望隨著參賽的人流走到這裡,正好撞見了準備進場的宋宸卿,還有與他揮手作別的鄭慶松。

  鄭慶松眼角餘光瞥見洛北和何子望走過來,也不甚在意,繼續對愛徒叮囑道:「宸卿,專心比賽,發揮出正常水平就好。別被其他人影響了狀態。」

  看到宋宸卿氣勢滿滿的樣子,活像只神氣活現的小公雞,何子望的腳步不由一頓。

  小何同學有點窘迫,因為他認得宋宸卿。在0ler的圈子裡,宋宸卿名頭很大,以CQ.Song的ID,被其他人膜拜為新晉大佬。

  洛北不認得這位隔壁班的競賽大神,此時面色如常,徑直從宋宸卿身邊走過,直接進場了。

  宋宸卿早就發現了洛北。原本還想著兩人碰面會發生什麼,不過果然是他想多了。

  隨即他又覺得是自己刻意多想,因為對面壓根就沒有競賽經歷,不知道他這個傳說中的CQ.Song大佬也正常。反而是自己嚴陣以待,顯得有點落了下乘。

  他搖搖頭,把腦子裡多餘的念頭屏除出去,也雄赳赳走進賽場。

  帶著淡淡臭氧味道的機房裡,冷氣開得很足。宋宸卿在自己的機位落座,注意到洛北正好在他的左前方。一抬頭,就能看到那傢伙的背影。

  哼。宋宸卿鼻子裡出了一口氣,等著吧。他把帶來的心愛鍵盤接上機箱USB□

  ,神情不屑。

  參賽選手們陸陸續續進場了。開賽前五分鐘時,宋宸卿打著哈欠,聽監考老師照本宣科地宣讀完比賽規則。快開始吧,他不耐煩地想著。

  而左前方的洛北,一如往常的放鬆姿態。他沒有像其他人一樣急著開機檢查環境,而是緩緩閉上眼睛,任由腦海中的天賦樹,緩緩亮起。

  【職業天賦「程式設計師」切換成功,當前等級:Lv1「普通」。天賦技能:「編程」已可用。】

  【因持有「做題家」的上位天賦「學者(已戴冠)」,你的「雙重天賦」效果將從原有的「概念超憶」變更為「實用主義」。你獲得了持續1小時的「雙重天賦·實用主義」效果。】

  「實用主義」,開!

  洛北睜開眼睛的瞬間,監考老師剛剛宣布比賽開始。

  選手們需要根據監考老師剛公布的密碼,解開早已存放在機試電腦上的一個壓縮包。那就是這次滄海杯省賽(京畿地區)的比賽題目。

  然後,登錄滄海杯官方指定的在線評測系統,把六道算法大題逐一解答,然後提交系統評判。答題質量,直接決定了他們的排名。

  賽題分為A、B、C三檔,京華大學的選手都被分在難度最高的A組。

  打開電子文檔的瞬間,宋宸卿只覺得心頭狂喜:乍一看,前幾題都是他早已練習過不知多少遍的老熟人!

  慣例的六道C++算法題。第一道,零食採購,經典圖論題,尋找最短路徑下能採購到的零食總數,對宋宸卿來說手到擒來。

  第二題,五子棋對弈,要求找出下滿棋子且為平局的情況,宋宸卿直接想到了枚舉+深度優先搜索,還即興往裡面加了一點剪枝。

  第三題,訓練士兵,計算讓所有士兵成為頂尖戰士的最小金幣花費。這題宋宸卿難得地卡了一下,不過很快就想到了用排序+貪心算法。

  一道道算法題迎刃而解,宋宸卿高奏凱歌,竄到了第四題面前,心想網上的人就是愛咋胡,非說23年之後滄海杯換了一批出題老師,難度比往年大幅上升。

  現在看來不過如此,一眼魚塘局被他秒殺的貨色。

  第四題,團建問題————嘶,有點意思。難度一上來,宋宸卿終於起了點興趣O

  「小滄和朋友們團建,有一個項目要雙人合作,兩人分別拿到一棵大小為n和m的樹————給出兩棵樹,請計算他們最多的得分各是多少?」

  他宋大神是何許人物,只思考了二十分鐘,就有了思路。

  這是一個路徑匹配和動態規劃問題。宋宸卿首先想到的是同步DFS匹配:從兩棵樹的根節點開始,同步搜索,當節點權值相同而且是葉子節點時終止,然後記錄公共前綴長度————不,等等。

  這樣時間複雜度還是有點高,得優化一下。

  應該先用哈希表存儲索引,再深度優先遍歷,把表存入bk樹里。終止條件也需要仔細考慮————


  宋宸卿發現,這題裡面藏的暗坑還不少。如果不是他,是一般人,估計早就栽進去了。

  哼哼,現場應該沒有人做得比他快吧?宋宸卿點下提交,得意地環顧了一下四周,尤其重點望向左前方的位置。

  當然,以比賽機位之間相隔的距離,他也看不到什麼內容。只見洛北還在對著屏幕敲敲打打,覺得一股優越感冒上心頭。

  傻了吧,小樣兒。就算是滄海杯省賽這種水賽,也夠你這種門外漢喝一壺的O

  宋宸卿不會知道,現場還真有人比他快,而這個人,就是他暗自揣測要喝一壺的「門外漢」。

  在「實用主義」的BUFF下,洛北只覺得思路清晰,狀態絕佳,前所未有。

  代碼隨著鍵盤的敲擊而跳動,靈感不斷湧現,根本停不下來。

  第一題,Kill。第二題,Kill。第三題,Kill,Kill,Kill,洛哥來了全都殺了。

  就在宋宸卿琢磨著優化第四題團建問題時,洛北直接視題目的陷阱於無物,橫衝直撞碾壓過去了。他腦海中首先浮現的想法,直接就是最優思路。

  不過就是深度優先遍歷同步比較兩棵樹的路徑,通過適當的哈希處理和提前剪枝,把時間複雜度壓到0(n+m)級別。

  寫完,提交,然後是第五題,沒有絲毫停頓。

  「小滄班上有n人,一次考試後他想統計全班人的成績,已知第i名同學的成績為ai,當小滄統計完前名的成績後,他可以從1—任選k名同學,計算他們成績的方差。小滄至少要檢查多少個人的成績,才可能讓k名同學的方差小於一個給定值T?

  「」

  看著很長的一串文字和公式,但在洛北眼中,關鍵信息被瞬間提取出來了。

  腦內數學建模,完成。

  拿過一張草稿紙,洛北在紙上推出方差<T的表達式。式子略複雜,但是難不倒繼承了大師級「做題家」全部特性的,「學者」天賦的持有者。

  很快,他得到了一個化簡後的不等式。緊接著,洛北根據這個推導式,馬上構造出檢查方差是否滿足條件的check函數。

  接下來,要做的事情就很簡單了:

  先把數組的前個元素複製到新數組b裡面並排序,再根據化簡後的不等式來計算前綴和、前綴平方和。最後檢查所選的k個成績是否滿足條件,使用二分查找,調用check()函數加速搜索————

  整個思路,行雲流水,一氣呵成。幾十行代碼就搞定了。洛北不假思索地提交第五題,直奔最後一題,因數計數。

  因數計數,是這次省賽A組的壓軸題。這道題的題面很短,和數學的關聯性卻不小:「小滄有含n個正整數的數組{an},定義一個整數對(1,y)是另一個整數對(

  2,y2)的因數,若且唯若1y1分別是2y2的因數。他想知道有多少個有序四元組(i,j,k,I)滿足(ai,aj)是(ak,al)的因數,其中i,j,k,I互不相等——」

  這是一道結合了數學推理的算法題。需要預先推導因數關係,然後枚舉四元組。

  如果參賽選手的數學基礎不夠紮實,最容易想到的思路就是暴力求解。但強行硬算,隨之而來的超高的時間複雜度0(4),按照題目給的測試用例範圍,最多只能拿到3040分。

  洛北當然不會這樣做。

  這道題,對他來說,思路其實依舊很清晰:因為只用計算四元組的個數,不用計算具體是哪些四元組。所以,可以直接考慮數論中的容斥原理,運用排列組合,先計算出基本因數對數,再排除重複和無效情況,就可以得到最終的結果。

  「實用主義」,恐怖如斯。在這個特性的輔助下,洛北總能靈感爆棚,直接找到那條最高效的路徑。

  緊接著,就是將思路貫徹為實際了。

  思路一通,代碼就如潮水般湧現。啪咔啪咔啪咔————即使是最便宜的薄膜鍵盤,在洛北手中,同樣是飛花摘葉可殺人的碼字神器。

  十五分鐘後,最後一行代碼完成了。洛北的手指在回車鍵上輕輕一敲,點下確認。

  提交。

  接下來,就交給官方後台的評分機器判斷吧。

章節目錄