1. 程式人生 > >【轉】讓人深思的退役貼

【轉】讓人深思的退役貼

3xian退役貼
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
最後一天,漫天飄起了雪花,假裝歡送我離去。

這次WF之戰不太順利,早期的C題大概花了1秒鐘構思,然而由於輸出格式多了一個空格直到兩個半小時才逃脫Wrong Answer的糾纏。還好lynncui在期間獨擋一面過掉D。最終成績不好,然而沒有遺憾,從不遺憾。


相比之下,來自全球的隊伍讓我看到了很強大的實力,每一道題都有人過,包括SJTU欺騙性提交的H都被人幹掉了。身為地球人我感到自豪。

WF之旅很奢華(Sample: 1300一晚的酒店,99一頓的早餐),活動很多,服務很好。但最終念念不捨的是各位一見如故的朋友們,至於為什麼一見如故我也不得而知。按HH師傅說,That's what ACM brings to us。也感激於HH師傅作為浙大教練,卻為我們攝下了更多的賽場瞬間。

早早就打算把今年作為退役戰,因為我相信,大學生涯完全耗散在一門競賽上是不太妥當的事情。然這次的經歷讓我特別捨不得各路朋友們,如果有機會還是很想拉大夥喝一些酒,談一下天。雖說退役,此後我仍然會找有趣的題目做做,仍然會投入很多時間在演算法之中,但不再關心比賽的事情。


最後一天,腦海裡全是這兩年ACM生涯的片段。其實早就想記下ACM生涯中複雜的情緒,可擔心把事情說得太明白會破壞一些友誼。如今想來,倘若批判不是直白的,那麼讚美就是沒有意義的。

初出茅廬

剛踏入大學校門的時候,並沒有聽說過ACM。跟班裡大都數同學一樣,大一接觸C語言,但中學時候對ASP和Flash的AS比較熟悉。大一被fyj老師看中,進了一個研究生為主的專案團隊,並沒有給我什麼任務,只讓我學東西,事實上也沒學什麼東西,倒是裡頭一個師兄給我接了一些私活,我一個人包做ASP的商城、論壇之類,完成一項大概花三個星期,報酬1000+。賺了一些錢之後就翹了一大片課,買機票去廈門跟前女友過日子。回想起來覺得有點不可思議。那時候確實過得很瀟灑,平時做各種各樣喜歡做的事情,班裡還有人拜我為師學吉他。


大一上學期的期末,跟4h去喝酒的時候他首次提起ACM(其實他指的是OJ),我馬上表示這是一種很有趣的事物,公平而富有挑戰性。當晚回去就跑到HDOJ嘗試,下面這個是處女交。
419087    2007-12-04 20:19:32    Wrong Answer    10000MS    0K    82 B C    3xian


PS:HDOJ的A+B確實比較折騰,對於不瞭解OJ模式的人來說,哪裡知道用EOF來做什麼。

接下來的幾天很快就做掉了最大子串和,高精度加法什麼的。當初想按題號順序做,很容易想象,活生生被1007卡死了(二維最近歐幾里得點對)。那時候大號小號一共交了兩百多次,最後是給水過去的——隨便按兩個方向排序,然後只比較相鄰的點。話說回來,即便是水過去已經不容易了,一個不知演算法為何物的土人,要想出經典的分治法和掃面線法都是不太可能的事情,更別說線性篩法。而這個題目給我的最大啟發是:原來C語言有qsort這種東西。

晚些找4h單挑了幾次,隨機抽題號,比誰AC得快,戰戰兢兢地全勝。

入隊

第二個學期的時候,在公共垃圾桶裡瞄見了一張ACM隊招新傳單,是的,是垃圾桶,我把它從垃圾桶裡掏出來了。必須的,跟4h一起去面試。問,掛過科沒有。 我說我掛了歷史之類的。(其實還掛了高數,但是“之類”是一個海納百川的辭法……所以不算欺騙。一年之後領隊發現我掛過高數,一臉想踢我出隊的樣子。)接著,我被考到快排的時間複雜度,4h搶答nlogn。我說,我已經在杭電做了一百題了,夠不。曰,到時候看你校賽的表現。

後來校賽拿了第3名,前兩名大三的至今搞不清是誰。其實校賽裡頭有一道最大子串和,我沒讀懂題意,否則估計就奪冠了?反正是順利入隊,並直接被扔去省賽作敢死隊。當時我跟領隊說過這樣一句話讓他覺得特無聊,我說,明年的這個時候我肯定是我們學校最猛的。

另外當時隊裡最受寵的是06級的wjs,我又悄悄跟4h說,明年的這個時候,06級最猛的不是wjs,而是ccf。

ziliang

不得不提到這個人。ziliang是廣工ACM近代史的鼻祖,07年為廣工奪得了的地區賽的首牌和首銀。一路以來給我們指引方向,儘管細節上沒指點太多,其實也沒必要指點太多。在我看來他的思維能力比現在的一批人高一個檔次,估計也是屬於百年孤獨的型別。
從我入隊開始ziliang就開始忽悠每一個人。比如一開始假裝師姐來掏我們的底細,當時她(他)問我是不是搞過OI,我答:OI?OJ吧……
然ziliang的影響力之大也造成了不好的影響。隊裡的人都膜拜他,膜拜到每天都陪他在Q群裡吹水。平均下來每天要吹兩三個小時甚至更多,這算不算是變相自殺。早期我試圖融入這樣一種氛圍,畢竟孤立難以生存。後來發現融得很不舒服,權衡之後選擇了遮蔽Q群。事實上隊裡的這種現象歸根結底跟ziliang是無關的,不是他不知道自己在幹什麼,而是各位隊員不知道自己在幹什麼。

周賽

進隊之後我們新生被組織起來參加周賽,也正是從這個時候開始,剛進隊的我就對整個團隊失去了歸屬感。本來按我入隊時候的實力來說,甩開第二名幾題應該沒有什麼問題,但事實上有時候我連冠軍的位置都不保。是的,從網上找程式碼作弊的人太多了。不想點名也沒必要點名,男生很猖狂,女生也很猖狂。當時我看到很多可悲的現象,比如有些沒作弊的人因為被人狂虐而喪失信心而淡出ACM,比如有的人自己作弊之後私底下還跟我說誰誰誰作弊,比如帶隊老師根本就不關心我們這兒發生了什麼。總的來說就是,廣工當時這麼菜的ACM隊,大家居然還挖空心思通過坑自己人來滿足那點可憐的虛榮,真他媽作孽。

最初參加周賽的時候,我是無比的緊張,無比的投入,以至於後來無比的失望。之後無論是各種周賽,我看到ranklist上熟悉的賬號們我就不想再摸鍵盤。去年秋天我收取集訓總結的時候看到很多人都說我周賽的時候總是“火星般消失”,這個簡單的原因,沒人體會得到。

儘管如此,周賽之中還是有一些搞笑的回憶,比如Lynncui敢於隨機敢於打表,比如wjs用一次不回溯的DFS水過了最短路,比如yqj企圖用long double過各種高精度,比如我大一比賽的時候“發明“了Prim、Disjoint Set,比如我從牙縫裡刷出芝麻的時候才發現爸爸媽媽在我周賽的時候做了各種補充能量的點心。

長進

從開始到現在,我迷戀於演算法,而最終並沒有成為一個優秀的ACMer。這一點跟ziliang相反,他不喜歡站在巨人肩上,他知道比賽最重要的是戰術和技巧。必須要看到,玩ACM跟玩演算法是不同的事情,ACM是考驗智慧、考驗綜合素質的,我敢大言不慚地說,ACM玩得好甚至不需要去刻意學什麼演算法。雖然我們偶爾見到一些題目需要一些成熟的經典的演算法,那些題目是我喜歡的題目,但是那些題目屬於最垃圾的ACM題目。另一角度來說,很多人覺得自己ACM出成績了就代表自己演算法不錯了,這是一種錯誤觀念,當你深入任何一個方向的演算法領域的時候,你會發現ACM那點東西太小兒科了,太不入流了。說白了,ACM是打著演算法的幌子來讓大家比腦子。

粗略統計,鄙人兩年來做題1.6K,看國內外論文200+,看書十來本。最終變成現在這個樣子……什麼樣子我自己就不評論了,你覺得是什麼樣子就是什麼樣子。

對於ACMer來說,Matrix67早已放過話,“USACO你老老實實一個字也別看解題報告,做完你就無敵了”。我們隨處可見一些做了很多很多題目實力還上不去的人,此類八成是是有看解題報告的習慣,其中包括想都沒想就衝進discuss裡頭瞄來瞄去。

不由得想起一個人。08年秋天,ACM圈子冒出了一個部落格點選率很高的傢伙,叫zfy。他的出現讓不少人長了見識,不得不表示稱讚。本來他是一個作風不錯的人,但是在一定程度上讓一些人養成了新的壞習慣——做不出題就找論文,這跟找解題報告有什麼區別呢,就名字不同。我們學校肯定也有人覺得,三鮮是不是腦子被驢舔了,做個破題用不用看那麼多論文。事實上我基本不在做題的時候碰論文,倘若兩者糅合在一起,最終結果基本就是這頭感受不到論文的內涵,那頭題目也白做了。

其實在我們這種環境下提高還是比較不容易的,一來身邊沒什麼人可以提供幫助,二來各路大牛也不喜歡搭理菜鳥。很多時候就需要死磕,一個人死磕。記得當初通宵磕V圖,通宵磕動態樹,過年回老家旁邊開幾圍麻將窗外小屁孩放炮竹我在黑燈瞎火翻譯字尾樹。如之前所說這些東西其實跟ACM關係不大,但我心裡總會有一種感覺,人家OI的娃們隨手拈來的東西你寫不出來就沒法跟人家比。好比08年地區賽的網路賽那回,人家紛紛秒殺的題目,我們全校沒一個人聽說過那些個演算法的名字。

後來比賽經歷得多了,也慢慢給自己有了定位。時常在網上看到很多人比完賽唉聲嘆氣,也有些人號稱“本來有奪金的實力”、“沒發揮好”。我曾經也有段時間神勇地跑去做掉很多難題,一度以為自己到了登堂入室的水平,後來發現完全不是這麼一回事。真正的高手是什麼樣的,他們不需要吃飯時候的冥想,不需要靠洗澡時候的靈光一閃,他們比賽的時候坐在那兒就能熟練地做出各種難題,他們在讀錯題的時候能保證成績,在資料錯的時候能保證成績,在沒人敢提交的時候果斷提交,在比賽快結束的時候冷靜編碼。簡單來說就是,他們不僅僅是做題能力強,而更是綜合素質強。比賽之後說太多“本來”、“如果”的人,屬於心理素質欠佳,這是綜合素質重要的一塊,也是阻礙長進的一塊。因此,當你沒有達到預期的目標,根本就不應該想著你丟了一塊牌,而應該想想自己是否真的值那一塊牌。

境內境外

這個話題我以前寫過,但是刪掉了。

國內的ACM圈子總是表現出一種浮躁的風氣,儘管不缺乏超強的人,但強人都很低調,或者說,強校更多是閉門造車。可以去看看國內ACM最火的POJ論壇,琳琅滿目的欠揍的東西:求/貼資料的、求/貼程式碼的、叫人家來查錯的、日題目的、炫耀的、留名的、二三流人物相互膜拜的。看看站內信,多少是求程式碼的(我的原則是問我思路的一定悉心回答,要程式碼的一律無視)。再看看百度到的解題報告,多少是相互抄襲不求甚解的。

而國外,我不敢說得太完美,畢竟我對國外瞭解不算太多。首先一點,國外的OJ很少上述欠揍的東西。自從把做題重心放到國外的OJ,用郵件跟一些外國選手聯絡得越來越多,他們發郵件的時候會非常嚴謹,幾乎每一句都會給出證明,至少會有一個簡單的交代,有時候附件裡頭會附上幾篇論文。他們從來不貼程式碼,但如果你腦筋實在轉不過來,人家會問你是否需要程式碼。尤其是在SPOJ,我結識了俄羅斯/巴西/印度/美國/加拿大的朋友們,感謝他們給我帶來的所有的解題思路的啟發和做人態度的啟發。這裡說一個小插曲,曾經有一位朋友賜我兩篇俄文的極品論文,全文翻譯成中文之後儼然成為天書,全文翻譯成英文之後仍然是天書,人肉翻譯成中文還是讀不下去,最終人肉翻譯成英文然後反覆閱讀,終有所成……當時的壯舉讓宿舍裡直呼我是世界級一流選手。

我認為,國內資訊學競賽成績強勁,而IT行業不見得強,從ACM這塊就看出端倪。我們這兒大環境是明顯不如人的。我作一個不負責任的假設,假設全球所有閉門造車的經典強校都不準參加ACM比賽,那中國隊伍就是集體被虐。而行業的發展並不能僅僅依靠強校的寥寥數人。

Lynncui

該講講我的隊友了。首先最要感謝的就是隊友Lynncui,一直以來他對我都無比信任,而我卻總是在比賽的關鍵時刻表現出毛躁的一面,在此表示愧疚。由於Lynncui年紀偏小,我很奇妙地見證了他這兩年從一個胡鬧的毛孩變為成熟青年的過程。在我們還沒入隊的時候,招新群裡最高調的就是他,我很清楚地記得當時他咬定PE是因為原始碼格式不對……於是我直接把他歸為傻逼一類,萬沒想到Lynncui在未來會成為我最最好的搭檔。

他屬於很清楚自己在做什麼的人,因此沒有動不動就看discuss、解題報告的陋習。儘管我有時候覺得他比較懶,並沒有花太多的精力在ACM之中,但由於他的清醒和踏實,只要做一點,就能進步一點,只要花心思,就能見效果。我在我們學校討論問題,基本上除了ziliang我就只找過Lynncui。無論是練習還是比賽,他都能保持清晰的思路,儘管有時候向他灌輸一種新思想會感覺他硬得像石頭一樣。於是我們隊有一招最常用最有效的戰術:我有想法了就往Lynncui腦袋裡灌……艱難地讓他認可之後基本上就是無誤的,然後他坐我旁邊看著我寫,一交一個準。不幸的是WF的後半場我自己已經坐不穩了,也沒能說服他什麼。

當然,Lynncui的個人實力也不是蓋的,他的強項就是以窮人的身份參加各種程式設計比賽贏取衣服。上次GCJ好像排一百多名來著。

不管怎麼說,以他的做事習慣來看,以後肯定不差錢。

4h

這是我最老的搭檔,我的每一場ACM比賽都跟他相伴。同時他是我的酒友和玩伴,相比之下ACM隊友這個身份反倒是有點遜色。4h入隊時候的天賦和知識背景都是很高的,但似乎終究沒把ACM當回事。而且怎麼說呢,做題比較急功近利,以至於後期進步不明顯。曾經瞅見他下資料之後把過不了的資料直接打表AC的猥瑣事……甚是憤慨。不管怎麼說,他一直能輕鬆地留在TEAM ONE,這就是他的本事,換個角度看,也是廣工ACM隊的悲哀。

對我來說,4h在我的大學生涯扮演者重要的角色。如果不是他跟我喝酒,晚上跟我到處去玩,廣工這地方真的不容易呆下去。

DieIng

這又是一個很信任我的人,感謝他。廣工裡頭,DieIng對ACM的熱情僅亞於我,混跡於各大ACM神群,膜拜過各路神牛。DieIng比我們3個晚幾個月進入集訓隊,幾乎沒有計算機的基礎。這傢伙也有不少壞習慣,但是特別勤奮,以至於有今天的成績。我們集訓隊裡大家聽得最多的一句話就是DieIng說:又被三鮮鄙視了。我總喜歡挑他的壞毛病,因為我不忍心看著他的熱情在做無用功,但他好像覺得特委屈。

在很長一段時間裡,廣工就只有我們4個在繼續走ACM的路(而且4個還都是同一屆,這種狗屎狀況今年地區賽還兩個隊伍奪金,玄妙無比),忘記是誰給我們起了個綽號,曰,四大護法。於是DieIng總是最不幸的,因為一個隊是3個人,而他總被排在第4,搞得他的隊友要麼就是老東西,要麼就是小朋友。而我覺得,是DieIng沒有衝破自己的那一關,只要他敢站出來朝領隊說一句,我不信我比他們3個弱!那麼數輪PK之後淘汰的也不一定是他。

去年我本來打算跟DieIng組隊,畢竟2+2比3+1顯得有點人性,但最終領隊為了成績還是選擇了3+1。還記得跟DieIng為數不多的組隊練習中,只要是個題他都說是網路流……沒想到後來DieIng領銜出征的哈爾濱地區賽還真的出現了網路流,並且一出就是兩道,毫無懸念地,立馬就被我們Dieling童鞋秒殺,順利奪金。這事太不可思議,但無論如何,在自己專注的事情之中取得好成績是可喜可賀的事情,表示熱烈祝賀DieIng。

招新

去年我們ACM隊招新,挺滑稽,主力都是大二,招的都是大一。更滑稽的是,我大一時候從垃圾桶裡掏出來的招新傳單被委任由我來重新設計。當時設計得很精緻,還有淡雅背景(打印出來就不見了……),弄了一個賽馬的面試題來吸引新生(假裝考智力,其實是刷掉那些從網上抄答案的傢伙)。

由於宣傳到位,面試的時候來了兩百多人,但領隊採取了一種愚蠢的模式——分成5條隊,分別打分。我心想,我們這兒入門的人都不夠5個。之後果然就出現了更愚蠢的事情。當時要求是給每個人打幾個分,各項滿分是10分,而除了我和DieIng這條隊之外,每條隊打的分全是7分/7.5分/8分,我當時差點就對其他4個隊的人爆粗,這到底是搞永不落空的抽獎還是什麼,作為一個篩選環節,優秀的人就應該給9分10分,不行的人就應該大膽往低分打,0分都沒有任何問題。最終就是大多數人都無法區分,採取隨機晉級。

招進來的這幫人如今已經是大二了,我沒見到有太大成績。我曾經多次跟他們強調,要把我們的BBS利用起來,大家一起進步才能進步,至今還是淒冷一片。至今這一批人也沒有跟我探討過任何演算法問題,僅僅是偶爾找我幫他們的程式碼查錯,找我要標程。

罷。

往後

以後ACM的事情跟我沒太大關係。
就我認識的人來說,明年出線埃及機率很大的有夢翅@UESTC、小胡浩@HDU、t__nt@ZJU(這個沒懸念吧)。祝他們達到自己的目標,埃及肯定比國內好玩。

最後

我還是在想,如果當年我不去掏垃圾筒裡的招新傳單,一切又會是什麼樣子。
------------------------------------------------------------------
另一角度來說,很多人覺得自己ACM出成績了就代表自己演算法不錯了,這是一種錯誤觀念,當你深入任何一個方向的演算法領域的時候,你會發現ACM那點東西太小兒科了,太不入流了。說白了,ACM是打著演算法的幌子來讓大家比腦子。——演算法和競賽確實是兩回事
我們隨處可見一些做了很多很多題目實力還上不去的人,此類八成是是有看解題報告的習慣,其中包括想都沒想就衝進discuss裡頭瞄來瞄去。——我在DP講座裡面就說過不思考=沒有進步。
再看看百度到的解題報告,多少是相互抄襲不求甚解的——網上各種錯誤解題報告,都已經司空見慣了,甚至有人出錯題,然後有人把錯題錯誤地做出來了,貼出解題報告,然後一堆人轉+膜拜……

獨立思考。不論是做題,還是人生。
以上。