第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分。
洛北當然不會這樣做。
這道題,對他來說,思路其實依舊很清晰:因為只用計算四元組的個數,不用計算具體是哪些四元組。所以,可以直接考慮數論中的容斥原理,運用排列組合,先計算出基本因數對數,再排除重複和無效情況,就可以得到最終的結果。
「實用主義」,恐怖如斯。在這個特性的輔助下,洛北總能靈感爆棚,直接找到那條最高效的路徑。
緊接著,就是將思路貫徹為實際了。
思路一通,代碼就如潮水般湧現。啪咔啪咔啪咔————即使是最便宜的薄膜鍵盤,在洛北手中,同樣是飛花摘葉可殺人的碼字神器。
十五分鐘後,最後一行代碼完成了。洛北的手指在回車鍵上輕輕一敲,點下確認。
提交。
接下來,就交給官方後台的評分機器判斷吧。
計算中心的機房門前,洛北和何子望隨著參賽的人流走到這裡,正好撞見了準備進場的宋宸卿,還有與他揮手作別的鄭慶松。
鄭慶松眼角餘光瞥見洛北和何子望走過來,也不甚在意,繼續對愛徒叮囑道:「宸卿,專心比賽,發揮出正常水平就好。別被其他人影響了狀態。」
看到宋宸卿氣勢滿滿的樣子,活像只神氣活現的小公雞,何子望的腳步不由一頓。
小何同學有點窘迫,因為他認得宋宸卿。在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分。
洛北當然不會這樣做。
這道題,對他來說,思路其實依舊很清晰:因為只用計算四元組的個數,不用計算具體是哪些四元組。所以,可以直接考慮數論中的容斥原理,運用排列組合,先計算出基本因數對數,再排除重複和無效情況,就可以得到最終的結果。
「實用主義」,恐怖如斯。在這個特性的輔助下,洛北總能靈感爆棚,直接找到那條最高效的路徑。
緊接著,就是將思路貫徹為實際了。
思路一通,代碼就如潮水般湧現。啪咔啪咔啪咔————即使是最便宜的薄膜鍵盤,在洛北手中,同樣是飛花摘葉可殺人的碼字神器。
十五分鐘後,最後一行代碼完成了。洛北的手指在回車鍵上輕輕一敲,點下確認。
提交。
接下來,就交給官方後台的評分機器判斷吧。