盼望已久的冬假終于來臨,學生們的心情也随之快樂了許多。終于考完了所有的大試小試,卷子也講完了,一大包作業也背回家了——這不就跟學校說拜拜了嗎!
冬日的暖陽透過窗簾灑進了房間,雖然是隆冬,但鹿城的天氣依然不算寒冷,空氣中帶着些許濕氣,輕輕拂過臉龐,像是春天提前來臨的訊息。
姜明珺伸了個懶腰,又在床上滾了滾。明明已經醒了,卻依然不急着起床。她懶洋洋地待在被窩裡,隻眯着眼睛看着窗外——
街道上綠意盎然的行道樹依舊保持着生氣,枝葉在溫暖的陽光下閃爍着微光。雖然鹿城的冬天沒有雪花,跟帝都比起來,少了些許節日的氣氛,但她還是很滿意今年家裡留在鹿城過年的決定。
她随手摸到床頭的鬧鐘,昨晚她特意取消了平時的定時,發現現在竟然已經接近十一點,才恍若驚覺,心想:“難怪肚子有點餓。”
早上的懶散和舒适讓她忘記了時間的流逝。她輕輕地掀開被子,想要起床,卻又覺得這個床的溫暖太過誘人。
“哥,哥——”她喊了一聲,聲音帶着幾分撒嬌和依賴。
沒有回應。
她才意識到,姜明祎應該是回學校上競賽課了。
确實,冬假的時候競賽生也需要照常返校的,隻有新年那幾日可以休息。她心裡一陣無奈,主要是姜明祎這個人上競賽課的理由真的很奇怪:比如,他不是因為自己真的喜歡,或者為了升學加分才搞競賽,他隻是因為朋友都參加了,自己也跟着參加,美其名曰,“舍命陪君子”。
聽聽,這多沒有主見,要是她,這麼花時間的事情她才不參加。有這時間,去書店的咖啡角,翻翻新到的書,這才叫惬意。
姜明珺揉了揉眼睛,懶洋洋地窩回床上,覺得自己也不應該賴在床上太久。沒哥哥幫她拿吃的,她隻好決定自己動手了。她翻開被子,懶洋洋地從床上爬起來,走向廚房。看着冰箱裡剩餘的食材,那就做個簡單的三明治吧!
早餐做好了,她坐在餐桌旁,打開電視,随意放着一些無聊的綜藝節目,全當背景音。她一邊吃,一邊想着老哥在學校吭哧吭哧皺着眉頭聽課受苦的樣子,不禁噗嗤一下笑出聲來:哥哥是舍命陪君子了,但顧梓聿應該如魚得水、樂在其中吧?反正他就是純純一個大變态,也不知道他的腦子是怎麼長的。
這些年,姜明珺跟着他們倆一起長大,那些顧梓聿令競賽黨“聞風喪膽”的光輝事迹她早已倒背如流:
顧梓聿因為超常的天分,在還是小學生的時候就和中學生一起上競賽課,開始超前學習競賽知識。初二時,他拿到了物理奧賽 CPhO 全國一等獎,入選了國際物理奧林匹克競賽 IPhO 的國家集訓隊。要知道,國際物理奧林匹克競賽是世界上最高級别的競賽,主要面向不超過20歲的中學生,但還在讀初中的顧梓聿卻做到了。
更變态的是,顧梓聿在集訓期間堅持做數學奧賽題,其間請假參加數學奧賽 CMO 決賽,又獲得了全國一等獎,入選了數學國家集訓隊。
而這,不過是他初二上學期的事。
最令那些苦命的競賽黨難以置信的是,在兩個國家集訓隊封閉訓練時間部分重疊的情況下,顧梓聿靠着部分自學、請假考試,最終在兩個集訓隊都留到了最後:他是數學 IMO 國家隊的六分之一,和物理 IPhO 隊的五分之一。若不是最終比賽時間沖突,導緻他不能同時參加兩項競賽,他很大概率會同時出現在數學和物理兩個學科的國際奧賽中。
最終,顧梓聿選擇了留在整體實力較弱的物理國家隊,而數學金牌的競争者們則應該很慶幸自己少了一位勁敵。
在競賽圈裡,他的名字成了一個傳說。當時,顧梓聿和4名隊友赴索倫參加第43屆國際物理奧賽,一名索倫隊的帶隊教練還向他打聽“認不認識華納一個很有名的、在數學競賽方面很強的Gu”。當得知“Gu”就是眼前這個少年時,他還非常疑惑地詢問,是否“Gu”走錯了賽場。
而顧梓聿在物理競賽中同樣捍衛了他的名聲:他在368名選手中獲得了金牌第一名。
更誇張的是,顧梓聿在初一和初二時參加的全國信息學競賽NOI,都入選了國家集訓隊,隻是沒有參加後續的IOI。
要知道,IOI、 IMO 和 IPhO 的參賽時間都是背靠背的!也就是說,假如時間精力允許,顧梓聿能同時參加這三項競賽的話,同時拿到三枚金牌也不是不可能。即便如此,顧梓聿也已經在數學、物理和信息學領域展示了極高的天賦和跨學科的才能。
顧梓聿的競賽履曆堪稱傳奇,這樣金光閃閃的履曆背後,他付出了多少,姜明珺看在眼裡。雖然顧梓聿在她面前更像一個寬容的大哥哥,但她知道,實際上他是一個對自己要求近乎苛刻的人,這個性格在學術領域也許能有非凡的成就,但他也需要一個能勸他“适當放松”的人,就比如哥哥姜明祎的存在,有點像顧梓聿的心靈按摩師——他更輕松幽默,更能讓人喘得上氣來。
姜明珺時常想,像顧梓聿這樣的人,将來就應該去做基礎科學研究,用那種極端的專注力、堅持和探究的精神,解決限制人類發展的科學難題,推動學科的進步和科技的飛躍式發展。
總感覺這樣的人的存在,才是人類世界珍貴的财富啊。
人類世界珍貴的财富現在正在焦頭爛額中。
倒不是因為競賽課的強度,純純是因為宋熙和——顧梓聿覺得師兄把自己當成了一個準職業小提琴家來培養,該說不說,師兄的成就高,對他的期望更高,簡直有點望子成龍的感覺了。
吳老師的态度已經很明确了:除了樂團排練,他現在就是跟着師兄混,但宋熙和這個人真的是閑不下來,在結束了那麼繁忙的巡演期之後,他居然每天仍然轉的像個陀螺一樣。這不,自從第一次見面到今天為止,不過10天,但他們已經見過三次了。
原本他對自己這個寒假的安排隻是學校的競賽課和樂團排練,也因此,他還存了幾分可以有閑暇時間和姜明祎去打幾場球的“非分之想”。沒想到,現在看來純純是妄想。
放假到現在,他除了第一個星期天,沒晚于過七點起床——多悲慘的假期,顧梓聿已經習慣了。
早上起來先練琴,九點準時到初中部參加信競的課。十二點最晚十二點半去食堂吃飯,下午按需點課,首先保證師兄的小課,要是師兄不召喚他,他再在物競/數競/化競的課堂上随機刷新出現。
機房内,雖然是大白天的,仍然拉緊了窗簾,室内白色的日光燈照亮了整齊排列的電腦,學生們三三倆倆地坐在一起。屏幕上閃爍着熟悉的代碼編輯器以及學校内部的在線評測系統。房間裡彌漫着淡淡的咖啡味——這是機房内唯一被允許帶進來的“戰鬥口糧”。
牆上貼着幾張醒目的紅字标語:
“獨立思考、不懼挑戰!”
“要麼AC,要麼重來!”
“算法是一種思維方式。”
講台的整面白闆上寫滿了各種算法公式、推導過程和僞代碼,右半邊還殘留着模糊的狀态轉移方程和圖論問題的手繪示意圖。進門的桌子上擺着好幾本厚厚的參考書:《算法導論》、《計算機程序設計藝術》、《挑戰程序設計競賽》,也不知道是誰的,忘記帶回去了,在這兒放久了,也就随之成了公用的了,供大家随時翻閱。
顧梓聿和姜明祎常常是一起到的,但張铎總是悄無聲息地就已經坐在那裡了,誰都不知道他究竟是什麼時候到的——難怪他管鑰匙呢。然後機房陸陸續續就有人來,大家都很自覺地,來了之後就安安靜靜地坐在那裡開始刷題。傅堯肯定不是最早一批來的,但他也不是最後一個,遲到一哥總是方靈烨。
大家的風格各不相同,有人算得飛快,像是在與時間賽跑;有人停頓許久,陷入沉思,然後突然猛然敲下一行代碼。除了方靈烨。
這小子是真的聒噪,機房裡除了鍵盤敲擊聲,就是他喃喃自語的聲音:“這個 f(n) 到底能不能拆成 f(n-1) + f(n-2) 這種形式?如果可以,那就是 DP,否則可能要用數論技巧……”他完全沉浸在自己的世界裡,幸好周圍大家都很nice,沒人想把一直發出背景音的他扔出去。
張铎算是冷靜型的,他總是戴着森海塞爾的降噪耳機,已經提交了十幾次的題,每一次失敗都會在代碼旁邊留下注釋:“TLE 可能是 log 的優化不到位?”、“WA,可能是邊界沒考慮?”他像個機器一樣有條不紊地調試代碼,直到那行綠色的“Accepted” 終于出現在屏幕上,他才輕輕舒了一口氣,揉了揉眼睛,開始看下一道題。
姜明祎的風格算是暴力流,用他的話來說就是“先寫個能跑的”。看到一道題如果沒有思路,他通常都是“能寫暴力就寫暴力”,不管算法最優解是什麼,先寫一段跑起來再說。
“過了嗎?”顧梓聿冷不丁甩來一句。
?“WA了。”姜明祎摸摸腦門,歎了口氣。
?“優化了嗎?”?
“在優化呢,把三重循環改二重,直接在外層循環計算和,避免 O(n?),時間複雜度會好點。”?
改完,他再次提交。結果還是 WA,他歎了口氣,抓了抓頭發,朝屏幕翻了個白眼:“我的生命又浪費了五分鐘,梓聿,你幫我看一眼呗,就求個最大連續子數組和,這個要怎麼做啊?”
“這麼經典的算法問題求 Maximum Subarray Sum,你是不是上課沒聽?暴力枚舉肯定不行,可以用分治法、前綴和或者動态規劃,時間複雜度逐個遞減,你選一個吧。”
顧梓聿看着腆着臉湊上來想直接看答案的好兄弟,十分冷酷地轉過頭:“算法導論裡有很詳細的解釋,自己看書去。”
姜明祎看着顧梓聿的屏幕,直接念出聲來:“…某城市有 N 個工廠(編号 1~N),M 個商店(編号 N+1 ~ N+M),需要運輸貨物。每個工廠最多可以生産一定數量的貨物,每個商店需要一定數量的貨物。運輸貨物的費用由路徑的單位運費決定,求如何安排運輸,使得在滿足所有商店需求的情況下,總運輸費用最小。”
“這是個網絡流問題,啊,我最讨厭網絡流了…你模要怎麼建?”
“這是典型的最小費用最大流,需要在最大流的基礎上,增加邊的費用,找到總費用最小的最大流方案。首先需要添加超級源 S,向所有工廠連邊(容量 = 産量),然後添加超級彙 T,所有商店向 T 連接(容量 = 需求),用差分約束系統 SPFA 或者 Dijkstra 計算最短費用路徑,用 EK 或 Dinic 增廣路徑求最大流。”
“好的好的,明白了。”姜明祎連忙點頭表示自己聽懂了——其實他并沒有聽懂,但為了不讓旁邊這個瘋狂算法怪繼續在自己耳邊啰嗦下去,他隻能裝作理解并完全贊同顧梓聿的解題思路,好讓他老人家心滿意足地回到自己的草稿紙中去。
該說不說,人比人氣死人,今天的訓練題一共就5題,他倆一起到的,他還在第2題,顧梓聿已經做到最後一題了。雖然目标是盡量在規定時間内完成盡可能多的題目,大家都在埋頭苦幹。但畢竟規定時間是5個小時呀,顧梓聿你能不能做個人!
傅堯專注地盯着自己的代碼,他用的是 Dijkstra,但某個測試點始終報錯,磨了很久還過不去,他忍不住低聲自問自答:“難道有負權邊?可題目說不會有啊?”
顧梓聿在一旁聽到了,随口說了一句:“不會是 0 作為權值吧?如果有 0,你 Dij 可能會出問題。”