032. 我不是菜鳥!
冬至將至,冬意漸濃,楚大的新手賽也一天天臨近。郭曉川埋首於白書第三部分「競賽篇」的學習中,進度雖不快,但穩定前進。動態規劃這塊硬骨頭,終於被他啃下了一角。有向無環圖、背包問題……這些原本抽象的模型漸漸顯露出內在的章法。他意識到,只要能理清問題與子問題之間的邏輯,解題就成功了一半。
從模仿書中代碼,到嘗試自己推狀態轉移方程,當完全憑藉自己的分析 AC了幾道題後,他感到一種前所未有的通透,好像降龍十八掌學了十五掌般,可以碰一碰曾經毫無頭緒的難題了。
比賽那天,和上半年楚大校賽一樣仍然是兩位學長帶隊,這次是崔顥和黃興。只是隊伍規模縮水了不少,包括郭曉川在內只有四個新手,一行總共六人,在寒風中顯得有些冷清。郭曉川默默跟在隊伍後面,手指無意識地蜷縮在口袋裡,既期待又忐忑。
新賽場不在超算中心。穿過東方紅廣場,繞過毛爺爺雕像,一行人走進另一棟樓。熟悉的戴鞋套環節依舊,機房內暖氣充足,與外面的寒冷形成鮮明對比。空氣中瀰漫著緊張和期待,鍵盤聲尚未響起,卻已在每個人心中預演。
也不知這次國御、師大、湘中等學校來了多少人,但偌大的機房座無虛席,熱鬧非凡。相形之下,雲麓僅有的六人隊伍顯得格外落寞。郭曉川找到自己的座位,手指輕輕拂過鍵盤,深吸一口氣,讓自己平靜下來。
比賽很快開始。新手賽確實對新手很友好,前三題的難度與暑期集訓時相當,郭曉川做得順風順水,直衝榜單前列,流暢的解題節奏讓他信心漸增。
突然有人出現在近前,將三個顏色鮮艷的氣球綁在郭曉川的顯示器旁。
氣球!上一次拿到氣球還是在上次……半年前楚大校賽那唯一的一個。此一時彼一時,人生的第二、三、四個 ACM氣球,竟隔了半年之久。他輕輕拍了拍飽滿的氣球,手回到鍵盤後,又輕快了幾分。
經過這段時間對白書的潛心鑽研,做題漸漸有了章法,對題目的判斷更加準確。每一道題,它需要什麼複雜度的算法,在自己的知識體系中,是否存在匹配這個複雜度的解法,都更加清晰。這種日漸增長的掌控感,讓他面對賽題時多了幾分底氣。
順利通過三道基礎題後,郭曉川根據榜單鎖定了第四道題,一道結合字符串預處理的數據結構。題目描述略顯繁瑣,細節要求很多,但憑著平時練習積累的直覺,他將函數模塊劃分得清晰有序。這道題進行得出乎意料得順暢,調試幾次後便順利通過。
當第四個氣球系上郭曉川的顯示器旁,榜單上隊友們還停留在兩題。
第三題雖然不涉及複雜算法,但需要一點巧思,比賽考的不止是死的算法,也考驗思維能力,這正是智力遊戲的魅力所在。郭曉川眼中閃過一絲明亮,在思維的競技場上,他也領先了一回。
第五題。滑鼠懸停在題目連結上,心裡已升起一層未知的恐懼。要上難度了吧?根據上一題的難度推測,接下來很可能就是他一直無法逾越的屏障——真正的算法題。
他點開題目,仔細閱讀描述。漸漸地,他的呼吸微微收緊,隱約辨認出這可能是一道動態規劃,他最近在白書上苦苦鑽研,剛剛入門,始終心存敬畏的動態規劃。
題目中的條件與約束在他腦中快速組合。他嘗試構建狀態定義,在草稿紙上演算出複雜的轉移方程,根據數據範圍估算時空複雜度,太大了,不行。
他深吸一口氣,想起這幾個月來在白書上啃下的那些艱澀理論,想起無數個深夜與狀態轉移方程搏鬥的時刻。
優化狀態定義,壓縮維度,空間複雜度理論可行,指尖在鍵盤上懸停又落下,寫了幾行代碼又刪除。
狀態轉移是否完整覆蓋了所有情況?思路開始混亂。
動態規劃是這麼艱深而牢不可破嗎?究竟什麼時候才能在比賽中正面擊破,究竟什麼時候才能突破那道屏障,難道永遠只能做解決簡單題的配角?
從小到大不行,試試從大到小?他在草稿紙上試著把題目樣例畫成箭頭連接的狀態圖,卻越畫越亂,這不是人能完成的事情。
手速再快有什麼用? 1A率再高有什麼用?你永遠解不出算法題,哪怕只有一點點算法。
他丟下紙筆,揚起頭閉上眼。雜念需要掃除,機房的燈光透過眼皮,將眼前照成一片溫暖的暗紅,題目的狀態在眼前徐徐展開,混亂,重來,混亂,重來……
當眼前的圖形漸漸加深,無用的信息被一一剝離,題目的信息終於與白書的模型成功擬合,這好像是個……有向無環圖!
郭曉川猛地睜眼,在代碼中快速敲下一套記憶化搜索。先完成轉移條件,再仔細處理遞歸終點,然後重新整理變量與主函數,小心翼翼地實現數據輸入輸出。
編譯運行,樣例通過。
一陣酥麻掃遍全身,滿頭的汗珠仿佛都在跳動。
提交。
評測隊列的狀態在瘋狂的 F5刷新中變化。
「Accepted」
一股熱流驀地湧上心頭,眼眶瞬間濕潤,手還在不自覺地顫抖,一種前所未有的成就感緩緩漾開。
我不是菜鳥!我能做算法題!
平時刷白書時不覺得,真到了賽場,才發現自己已經走了這麼遠。5個氣球在手邊輕輕晃動,是一串勝利的勳章。
隊友們嘗試第四、第五題未果,榜單上平添了幾個紅色方塊——未能通過。連崔顥和黃興兩位學長也止步 3題。
當終場廣播響起,郭曉川長舒一口氣,疲憊中帶著深深的滿足。
剛起身,就看到崔顥和黃興兩位學長與楚大的學長們說笑著從一旁的辦公室走出來。看來他們在比賽後半程早已放鬆地閒聊去了。
一位楚大的學長徑直走向郭曉川,伸手拍了拍他的肩,對崔顥稱讚道:「你們新隊員可以啊!」
「跟你們還是沒法比,6題、7題的都有。」崔顥客氣地回應。
「E題是個啟發式搜索,好多人暴搜超時。你們這小伙可好,硬是整出個動態規劃,零毫秒!」
郭曉川自己也愣了一下,這都行?他突然想起暑期集訓時尹學長說過的話:「比賽場上,一切皆有可能。」
ACM,真是神奇啊。
崔顥笑了笑,帶著點驚喜與自豪,轉頭拍了拍郭曉川,「繼續加油。等會兒別走,等一下頒獎。」
另外三名校隊隊友也湊了過來。「你 G題居然 1A了!感覺坑很多啊。」 G題正是郭曉川通過的第四題,那道字符串預處理的數據結構。
「這手速,這 1A率,就算難題不會做,也能打主力了。」
「5個題全 1A,太穩了!怎麼練的?」
郭曉川看了看榜單,那一排乾乾淨淨的綠色方格,只有 AC時間,沒有錯誤標記,在周圍一片紅綠交錯的格子中十分醒目。
是勤奮訓練的結果嗎?但其他隊員也在刷題。是天賦嗎?他從不這麼認為。是白書嗎?可大家學的內容也差不多,只是路徑不盡相同。
那到底是什麼?
「是 UVa。」崔顥在一旁開口說道,「趙學長讓我們多刷 UVa,但最後也沒幾個人堅持下來,數據格式太混亂了,純折磨。」
郭曉川恍然,白書上的題目全部來自 UVa這個 OJ。這幾個月來,他每天都被格式混亂的題目折磨,甚至有些題的輸入輸出都含糊其辭,硬是練就了憑樣例猜題意的能力。代碼寫得格外謹慎,防禦性十足,想得比出題人還多,完全是每道題 WA十幾次磨練出來的。
「你們也試試刷UVa吧,」郭曉川誠懇地說,「多被折磨折磨就好了。」
三隊友相視片刻,紛紛點頭:「好,試試去。」
頒獎儀式,郭曉川第一次站上領獎台,這種感覺實在太美妙,難以言喻。
「我是『外校』第一?」回去的路上,他仍有些不敢相信地問崔顥。
榜單只能看到隊號和姓名,也分不清誰是哪個學校的,沒想到就這樣輕描淡寫地拿了個「第一」,還贏了 100元獎金。
「沒錯,新一屆『新人王』,恭喜!」崔顥笑著答道。
郭曉川不禁想起沒來的蘇明和曹象,還有已退隊的劉建、呂良。還沒真正在比賽中擊敗過他們,如今這個像是撿來的「新人王」,到底有多少含金量?一念及此,他心頭掠過一絲陰影。
但喜悅終究占了上風,長久的努力第一次得到了切實的迴響,這份肯定猶如冬日陽光,溫暖身心。無論如何,這是在比賽中實實在在贏了一次,不再是原地踏步。
走出機房所在的教學樓,傍晚的寒風撲面而來,卻讓他格外清醒。路邊小吃攤已亮起溫暖的燈火,烤燒餅的香氣隨風飄來,還真有點餓了。
「我請大家吃燒餅!」郭曉川捏著手裡的 100元獎金,笑容燦爛,獨樂樂不如眾樂樂。
從模仿書中代碼,到嘗試自己推狀態轉移方程,當完全憑藉自己的分析 AC了幾道題後,他感到一種前所未有的通透,好像降龍十八掌學了十五掌般,可以碰一碰曾經毫無頭緒的難題了。
比賽那天,和上半年楚大校賽一樣仍然是兩位學長帶隊,這次是崔顥和黃興。只是隊伍規模縮水了不少,包括郭曉川在內只有四個新手,一行總共六人,在寒風中顯得有些冷清。郭曉川默默跟在隊伍後面,手指無意識地蜷縮在口袋裡,既期待又忐忑。
新賽場不在超算中心。穿過東方紅廣場,繞過毛爺爺雕像,一行人走進另一棟樓。熟悉的戴鞋套環節依舊,機房內暖氣充足,與外面的寒冷形成鮮明對比。空氣中瀰漫著緊張和期待,鍵盤聲尚未響起,卻已在每個人心中預演。
也不知這次國御、師大、湘中等學校來了多少人,但偌大的機房座無虛席,熱鬧非凡。相形之下,雲麓僅有的六人隊伍顯得格外落寞。郭曉川找到自己的座位,手指輕輕拂過鍵盤,深吸一口氣,讓自己平靜下來。
比賽很快開始。新手賽確實對新手很友好,前三題的難度與暑期集訓時相當,郭曉川做得順風順水,直衝榜單前列,流暢的解題節奏讓他信心漸增。
突然有人出現在近前,將三個顏色鮮艷的氣球綁在郭曉川的顯示器旁。
氣球!上一次拿到氣球還是在上次……半年前楚大校賽那唯一的一個。此一時彼一時,人生的第二、三、四個 ACM氣球,竟隔了半年之久。他輕輕拍了拍飽滿的氣球,手回到鍵盤後,又輕快了幾分。
經過這段時間對白書的潛心鑽研,做題漸漸有了章法,對題目的判斷更加準確。每一道題,它需要什麼複雜度的算法,在自己的知識體系中,是否存在匹配這個複雜度的解法,都更加清晰。這種日漸增長的掌控感,讓他面對賽題時多了幾分底氣。
順利通過三道基礎題後,郭曉川根據榜單鎖定了第四道題,一道結合字符串預處理的數據結構。題目描述略顯繁瑣,細節要求很多,但憑著平時練習積累的直覺,他將函數模塊劃分得清晰有序。這道題進行得出乎意料得順暢,調試幾次後便順利通過。
當第四個氣球系上郭曉川的顯示器旁,榜單上隊友們還停留在兩題。
第三題雖然不涉及複雜算法,但需要一點巧思,比賽考的不止是死的算法,也考驗思維能力,這正是智力遊戲的魅力所在。郭曉川眼中閃過一絲明亮,在思維的競技場上,他也領先了一回。
第五題。滑鼠懸停在題目連結上,心裡已升起一層未知的恐懼。要上難度了吧?根據上一題的難度推測,接下來很可能就是他一直無法逾越的屏障——真正的算法題。
他點開題目,仔細閱讀描述。漸漸地,他的呼吸微微收緊,隱約辨認出這可能是一道動態規劃,他最近在白書上苦苦鑽研,剛剛入門,始終心存敬畏的動態規劃。
題目中的條件與約束在他腦中快速組合。他嘗試構建狀態定義,在草稿紙上演算出複雜的轉移方程,根據數據範圍估算時空複雜度,太大了,不行。
他深吸一口氣,想起這幾個月來在白書上啃下的那些艱澀理論,想起無數個深夜與狀態轉移方程搏鬥的時刻。
優化狀態定義,壓縮維度,空間複雜度理論可行,指尖在鍵盤上懸停又落下,寫了幾行代碼又刪除。
狀態轉移是否完整覆蓋了所有情況?思路開始混亂。
動態規劃是這麼艱深而牢不可破嗎?究竟什麼時候才能在比賽中正面擊破,究竟什麼時候才能突破那道屏障,難道永遠只能做解決簡單題的配角?
從小到大不行,試試從大到小?他在草稿紙上試著把題目樣例畫成箭頭連接的狀態圖,卻越畫越亂,這不是人能完成的事情。
手速再快有什麼用? 1A率再高有什麼用?你永遠解不出算法題,哪怕只有一點點算法。
他丟下紙筆,揚起頭閉上眼。雜念需要掃除,機房的燈光透過眼皮,將眼前照成一片溫暖的暗紅,題目的狀態在眼前徐徐展開,混亂,重來,混亂,重來……
當眼前的圖形漸漸加深,無用的信息被一一剝離,題目的信息終於與白書的模型成功擬合,這好像是個……有向無環圖!
郭曉川猛地睜眼,在代碼中快速敲下一套記憶化搜索。先完成轉移條件,再仔細處理遞歸終點,然後重新整理變量與主函數,小心翼翼地實現數據輸入輸出。
編譯運行,樣例通過。
一陣酥麻掃遍全身,滿頭的汗珠仿佛都在跳動。
提交。
評測隊列的狀態在瘋狂的 F5刷新中變化。
「Accepted」
一股熱流驀地湧上心頭,眼眶瞬間濕潤,手還在不自覺地顫抖,一種前所未有的成就感緩緩漾開。
我不是菜鳥!我能做算法題!
平時刷白書時不覺得,真到了賽場,才發現自己已經走了這麼遠。5個氣球在手邊輕輕晃動,是一串勝利的勳章。
隊友們嘗試第四、第五題未果,榜單上平添了幾個紅色方塊——未能通過。連崔顥和黃興兩位學長也止步 3題。
當終場廣播響起,郭曉川長舒一口氣,疲憊中帶著深深的滿足。
剛起身,就看到崔顥和黃興兩位學長與楚大的學長們說笑著從一旁的辦公室走出來。看來他們在比賽後半程早已放鬆地閒聊去了。
一位楚大的學長徑直走向郭曉川,伸手拍了拍他的肩,對崔顥稱讚道:「你們新隊員可以啊!」
「跟你們還是沒法比,6題、7題的都有。」崔顥客氣地回應。
「E題是個啟發式搜索,好多人暴搜超時。你們這小伙可好,硬是整出個動態規劃,零毫秒!」
郭曉川自己也愣了一下,這都行?他突然想起暑期集訓時尹學長說過的話:「比賽場上,一切皆有可能。」
ACM,真是神奇啊。
崔顥笑了笑,帶著點驚喜與自豪,轉頭拍了拍郭曉川,「繼續加油。等會兒別走,等一下頒獎。」
另外三名校隊隊友也湊了過來。「你 G題居然 1A了!感覺坑很多啊。」 G題正是郭曉川通過的第四題,那道字符串預處理的數據結構。
「這手速,這 1A率,就算難題不會做,也能打主力了。」
「5個題全 1A,太穩了!怎麼練的?」
郭曉川看了看榜單,那一排乾乾淨淨的綠色方格,只有 AC時間,沒有錯誤標記,在周圍一片紅綠交錯的格子中十分醒目。
是勤奮訓練的結果嗎?但其他隊員也在刷題。是天賦嗎?他從不這麼認為。是白書嗎?可大家學的內容也差不多,只是路徑不盡相同。
那到底是什麼?
「是 UVa。」崔顥在一旁開口說道,「趙學長讓我們多刷 UVa,但最後也沒幾個人堅持下來,數據格式太混亂了,純折磨。」
郭曉川恍然,白書上的題目全部來自 UVa這個 OJ。這幾個月來,他每天都被格式混亂的題目折磨,甚至有些題的輸入輸出都含糊其辭,硬是練就了憑樣例猜題意的能力。代碼寫得格外謹慎,防禦性十足,想得比出題人還多,完全是每道題 WA十幾次磨練出來的。
「你們也試試刷UVa吧,」郭曉川誠懇地說,「多被折磨折磨就好了。」
三隊友相視片刻,紛紛點頭:「好,試試去。」
頒獎儀式,郭曉川第一次站上領獎台,這種感覺實在太美妙,難以言喻。
「我是『外校』第一?」回去的路上,他仍有些不敢相信地問崔顥。
榜單只能看到隊號和姓名,也分不清誰是哪個學校的,沒想到就這樣輕描淡寫地拿了個「第一」,還贏了 100元獎金。
「沒錯,新一屆『新人王』,恭喜!」崔顥笑著答道。
郭曉川不禁想起沒來的蘇明和曹象,還有已退隊的劉建、呂良。還沒真正在比賽中擊敗過他們,如今這個像是撿來的「新人王」,到底有多少含金量?一念及此,他心頭掠過一絲陰影。
但喜悅終究占了上風,長久的努力第一次得到了切實的迴響,這份肯定猶如冬日陽光,溫暖身心。無論如何,這是在比賽中實實在在贏了一次,不再是原地踏步。
走出機房所在的教學樓,傍晚的寒風撲面而來,卻讓他格外清醒。路邊小吃攤已亮起溫暖的燈火,烤燒餅的香氣隨風飄來,還真有點餓了。
「我請大家吃燒餅!」郭曉川捏著手裡的 100元獎金,笑容燦爛,獨樂樂不如眾樂樂。