我是一個高二的OIer,離我正式退役的日子已經不超過一年了。在這個時期,與其寫一些回憶性的文字,不如跳出“自我”的范疇,以一種比較全局的角度和大家一起分享一些我對OI的認知和看法。目的是讓初三高一的學弟學妹看清眼前的路,讓高二高三的人了解自己走過的足跡。
一.獨特的模式
知識的更新
我們先從OI的比賽日程談起。選手獲得NOIP一等獎后,可以報名參加WC(時間為1-2月)。而在5月,選手即使沒有通過省選進入省隊,也可以報名參加CTS(C)。其中WC和CTS(C)不僅是信息集訓隊的兩輪選拔,也是非集訓隊選手得獎的機會。而每年的WC,都會安排集訓隊選手和前集訓隊選手進行授課。每年的CTS(C),會安排候選隊選手(去年是候選隊前6)來進行英語自我介紹和論文答辯,這一項的分數是要按一定權重計入集訓選拔分數的。對於一個集訓隊選手來說,他不僅需要完成題目,還必須寫一篇關於集訓隊作業某些題的解題報告,甚至可能需要寫命題報告。如果他進入候選隊,那么他必須寫一篇候選隊論文。有時候選隊15人會組成小組互相出題給對方做,這被稱為候選隊互測。
撇去“收錢”的原因,為什么CCF要這么安排?因為CCF明白OI的知識范圍的更新只能靠水平較高的優秀選手來完成,之后服務OI的主力軍也是他們,而WC和CTS正是新的知識點向各個選手普及的過程。例如:2008年陳丹琪論文中出現了cdq分治,WC2012的陳立傑的《后綴自動機》講稿,在2013候選隊論文《淺談數據結構的幾個非經典解法》中出現的二進制分組的思想,在2015集訓隊論文出現的多項式求逆、ln、exp等技巧,以及在2019年WC講授的模擬費用流問題。硬性規定的解題報告、命題報告,是對他們之后出題工作的一個很好的訓練。
那些新潮的知識點會借助互聯網的平台逐步往下傳。一開始在那些大佬們的博客中出現,然后是一些高層次的比賽的題目(比如WC,CTS),接着是很多強校的模擬賽,最后就是NOI、省選、NOIP的真題了。在傳遞過程中,這些idea會經歷一定時間的考驗和衡量。最后我們留下那些能簡化代碼量的、對某些問題非常適用的、具有考察價值的知識點,在1-5年的時間內成為我們必須要學習的內容。
這樣的安排無疑帶來了非常好的效果,給OI的知識體系增添了活力。唯一美中不足的是:缺少能看懂候選隊論文的評委。每次答辯的時候,評委總是會問一些質量不高、無關緊要的問題。也許是因為CCF也知道這一點,除了一些極端情況外,候選隊論文答辯的分數不影響最終國家隊的名單。
命題的故事
那些集訓隊選手畢業后一部分會加入清華或北大的算法協會,在1-5年后成為比賽出題人。命題的工作需要尋找一個“靈感”,就是這道題的核心想法。在那之后還要經歷撰寫題面,編寫標程,設計部分分,驗證數據正確性和強度等一系列步驟才能真正完成一道題目的命制過程。一般而言,為NOI系列賽事命題有數百至上千元的報酬,但這些費用只是一種“辛苦費”。如果單從功利的角度來說,講課或者專心學術是更好的選擇。他們這么做完全是出自於一種對於OI的情懷。
但命題質量和數量的保障,甚至保密性都只能由他們自己來保證。如果在NOI附近正好處於出題人們idea的枯竭期,那么NOI的質量勢必不高。如果出題人正好要准備大學的期中考試等事情,那么他很難全副身心地去做出題的工作。就算出題人很用心的出了一道題,但是這道題也有可能因為難度不合適等問題而不適合出現在比賽中。也可能是因為這些原因,OI歷史上出現過很多設計不合理的比賽。ZJOI2018的難度過高、區分度過低,CTSC2018的題目出錯,NOIP2018的原題現象,CTS2019的知識點分布不合理都是鮮活的例子。
改進質量的方法,很大程度上仰仗於OIer與命題人的反饋交流,迫使出題人做出調整。你會在知乎上看到“如何評價xxxx(某比賽)”問題,就是出題人與選手的互動。底下這些評論往往表達選手的做題體驗和出題人的出題經歷,例如 [1]。最近還出現一些選手在自己出模擬賽的過程中探討出題的准則,比如 [2] 。 出題人了解某道題的得分情況和選手對這道題的評價后,他才能了解選手的普遍水平,才能了解哪些類型的題是對當下選手最具有考察價值的。在2017年某個出題人出過一道名為《挑戰》的題,正解是使用底層優化(卡常)使理論復雜度很高的算法通過匪夷所思的范圍(\(O(n^2)\)跑3e5,\(O(n)\)跑2e8)。這場比賽當天該題被批判的聲音就層出不窮了。之后這位出題人出的題,質量就有了很大的改觀。
學習的過程
作為一個選手,你最關心的可能是學習OI的過程。在NOIP提高組以下的層面,學習知識點可以通過看書,但是在這以上,尤其是針對較新的知識點的學習,就要依靠網上的博客了。博客一般是由現役的選手來完成的。但博客的質量魚龍混雜,良莠不齊,你在百度上搜lct,10篇里面有6篇的findroot后沒有splay。即使是水平較高的選手,他們寫的題解也不一定能讓別人容易看懂,很多時候簡略到只有一句話。一個普遍的問題是講解知識點或題目的時候單單着重於結論、算法過程,沒有把這個結論為什么是正確的、這個算法為什么要想到這兩個問題講清楚。[3] 表達了和我類似的想法。你有時看到題解大呼”太巧妙了”,“太神仙了”,其實是因為沒有體會到思考的全過程。為了解決博客質量的問題,我們建立了OI-wiki,shareOI,洛谷的題解擁有嚴格的審核機制。
洛谷、LOJ、UOJ上的學習資料是免費的,網上的博客是可以直接搜到的,是面對所有OIer的。在這個資源共享化的時代,你只要肯下功夫學,就有豐富的資料和題目可供學習。這一定程度上拉平了強校與弱校的差距。但是由於我上一段提到的原因,學習不能完全依靠於博客等資料,需要有選手來帶,需要有優質的模擬題來增加比賽經驗。往往只有強校能請的了上一屆的優秀選手、教練來講課,能擁有不對外公開的模擬題和OJ,所以強校與弱校的差距也將長期存在。
另一個重要的方面是講課,這一工作也由高水平選手承擔。講課一種是在機構受聘講課,另一種是在自己的母校講課(這種包括現役選手和退役選手)。前者的特點是受惠面積廣,能夠讓更多人學習。后者的特點是學生較少,容易通過調整自己的講課方式來滿足本校學生的需求。相比於前者,后者帶有更多的自願性。前者推動了OI資源的共享,而后者起到推動一個學校發展的作用。這並不是說前者優於后者或后者優於前者,事實上兩者都是必不可少的。特別是對我們學校來說,讓上一屆去帶下一屆是向外省強校追趕的必不可少的環節。而一個小集體的發展與一個大集體的發展是相互聯系的,有時一個學校的優秀選手可以帶動一個省的崛起。
一條從未走過的路
OI的知識與我們小學中學所學的東西是無關的,甚至與大學所學的算法和主流的計算機科學界關系都不是很大,它是一個相對獨立而封閉的體系。我們缺少完全理解OI知識體系的老師,我們缺少能夠長期命題的出題人,我們缺少專業的研究者。我們面臨了種種不利的客觀條件,這些是其它四大競賽所沒有的困難。
但我們不曾放棄,我們不曾退縮。我們竭盡全力探索出一種符合OI競賽特點的模式。這往大里說,是“計算機普及要從娃娃抓起”的踐行;往小里說,是為適應時代做出的努力。
我們終究探索出了一條從未走過的路,那便是以OIer本身為主導的OI模式!我們用已經培養出來的OI選手去擔任知識引入、命題、授課的工作,用上一屆OIer帶動下一屆OIer,再讓下一屆帶動更下一屆。我們借助互聯網的平台,發揮它傳播信息迅速的優勢,把所有的OI選手們連接成一個整體。把而競賽教練的作用,更多的是去維持這種模式,帶動這種模式。
這樣的模式是偏向於“用愛發電”的,它的核心基礎是OIer們對OI本身持久的情懷。它的優點是讓OI界具有很強的活力,給選手學習很大的自由度,也對OI的過度商業化,功利化形成了很好的保護。它也使得”OIer群體“這個概念有了很大的地位。
不過也容易想到它是脆弱的、不成熟的,在前面你可以看到它的缺陷。一旦OIer們全都由於一些現實上的原因沒有繼續服務於OI,必然會使這個體系有崩塌的風險。但它具有很強的不可替代性,無論是知識引入還是出題、授課,都只有OIer能勝任。這種模式在現實條件下幾乎是唯一的解,所以它是很難撼動的。所以我們應該想的是在方式方法層面上做一些改進,讓OI的未來變得更好。
二.OIer的價值
開拓者
你打開OJ,思考一道題目。你滿足於OJ頁面的精致,你陶醉於算法世界的美妙。你可曾想過這些題目是誰出出來的,你可曾想過OJ的搭建和維護者是誰?他們是某一個特別的OIer的群體。他們中有洛谷的創辦者kkksc03,LOJ的創辦者menci和UOJ的創辦者vfk。
你可以從 [4]、[5] 和 [6] 中窺探出當年他們創辦UOJ、LOJ的一些理念。我們在第一篇文章中截取兩段:
"不得不說今天是個傷感的夜晚。我們此時站在這里,連接過去和未來。曾以為我們的計划會成為我們的未來,卻不知道大浪拍擊沙灘的力量比颶風更有力。UOJ從哪里來?今晚的UOJ還是一年前發布時的那個UOJ嗎?為什么我們慢慢忘了那最虔誠的最初,漸行漸遠……於是我意識到,我們應該回去,回頭看看那最初的原點。最初我是懷着對OI界題目的不滿,最初我和業界毒瘤有很多比較難的腦洞想出給大家玩,最初的最初是那場引發我對OI比賽的思考的NOI2013……我們想建立的是,一個能自由評測各種類型題目的OJ,一個題題高質量的OJ,一個定期舉辦高質量的比賽的OJ —— 一個能帶給OIer思考與收獲的OJ。"
"我想起了我最初的一句'寧缺毋濫',我想起了激勵了我很長時間的洛克菲勒與協和醫院的故事:我們要以最高標准建一所醫院,成為中國醫學界的一座標桿 —— 而我們清楚地知道,論題目的數量,世界上千萬萬OJ不缺我們UOJ一家,我們要做的就是聚集最優秀最熱愛信息學的OIer,建立一個題目質量難以企及的OJ。"
500多道UOJ題目,上千道LOJ題目,數萬個OIer......今天你會看到各個學校的OJ如雨后春筍般增長,就歸功於他們用一行行代碼締造的平台。今天你會聽到OIer對比賽、對題目的廣泛討論,而那些新潮的想法其實來源於vfk在那幾篇博客上闡述的”好題“、“毒瘤題”的定義。今天我們從自己的成長之路向前追朔,也總能夠追朔到他們的所創造的資源。
他們是燈塔,他們是引路人。他們開拓了一條OI資源共享化的道路,他們以數十人之力創造了數萬人的價值。在之后的社會上,你很難看到像他們一樣完全堅持自己的初心、夢想,無私地奉獻自己的一切而不求任何回報的人了。我們希望他們的那些文字能夠在OI的歷史上熠熠生輝。
不可或缺的角色
誠然,我們很難像他們一樣對整個OI界做出很大的貢獻,對他們的態度也只是停留在“雖不能至,心向往之”的層面。那么我們的價值又在何處呢?
很多學校的教練都會在我們還是初三或高一時請高二的學長給我們來講課。一年過后,我們歡送他們退役,但我們站在他們的肩膀上,經過各種比賽的磨練,使自己變得更強。當我們磨練得差不多時候,我們就成了學長,就被要求給下一屆的學弟學妹們講課。WC2018的兩首改編歌詞《我的一個OIer朋友》,《退役的你》(詳見 [7] 、 [8] )是這段時光的真實寫照。我們從第一首里面截取一段:
"他們說的退役太沉重,你在路上追着你的夢。
前路會與過往不同,但精彩紛呈。
而我深夜刷題至三更,大賽過后睡眼正惺忪。
恍然之間終於看懂,當年你笑容,談何輕松?
不如將你鐫刻在心中,以足跡為路以背影為燈。
去年今日你的歌聲,由我來傳承......”
在這一段OI的旅途中,我們送走了一批人,又迎接了新的一批人。 我們把從學長那里得到的東西,經過自己的再加工、再整理,傳遞給下一屆,然后由知識的接受者變為了知識的傳播者。我們成了手握接力棒的人,成了連接過去和未來的人。這段旅途中難免有送別的傷感,但薪火相傳的使命與責任,才是主旋律。
如果我們中出現了一個優秀選手,那么就會產生更大的貢獻。一是會吸引更多的OIer來這所學校學習,然后進一步提高下一屆選手的水平。比如我在初三時選擇進入華二而非上中,是因為看到2017年華二CMO進了5個集訓隊,而上中只進了一個。二是會使整個省的目標提高,進而帶動整個省的水平。在2016年前,可能上海的目標是爭取更多銀牌選手。但因為像呂時清、何文陽之類的優秀選手出現,特派員開始朝着金牌這個目標努力了。他會親自那些不錯的OIer下發題目,親自評測、會在NOIP/CSP前安排幾次針對全市選手的模擬賽,會請外省的集訓隊選手來講課。最終上海在CTS,APIO,NOI上實現了這一目標。
哪怕你只是初二、初三、高一的OIer,還沒有達到給學弟學妹講課的階段,你也會不知不覺中影響很多人。在這個資源高度共享的時代,你不經意間說的話,寫的東西就可能會被數百人看到,然后數百人傳給更多人。就像我博客里面寫的“JOISC 2020自閉記”,閱讀量已經達到了530人,而我認識的OIer也不過100人。也許這530人還會傳給他們的朋友、他們的下一屆選手,說不定就有1000人直接或間接地看到了我寫的題解了。
另一種價值
由於OI競賽本身這種獨特的模式,OIer群體的概念與個體的概念,擁有同等的地位。所以一個OIer在他的生涯中,不僅存在個人價值(比如拿一等獎,進省隊,進集訓隊),還存在着另一種價值,那便是個人對OIer群體的價值。
很多時候實現個人價值也是實現這種價值,這種價值是個人價值的延續,因為高水平選手給OI界可能創造的價值越多。但和個人價值不同的是,這種價值所影響的時間更長,所影響的范圍更廣。也許我們退役過后,我們所獲得的獎項,只是OIerdb上那一條條數字了。個人價值是一個OIer退役后所帶走的,但這種價值是一個OIer退役后留下的東西,它是不會過時的。你為你身邊的OIer所做的事情,像是埋下一粒種子,它會在幾年之內生根、發芽,長成一棵大樹,甚至繁殖出更多的生命。vfk那一代的OIer很難想到他所創辦的UOJ能使這么多人受益,王聿中、呂時清、王潤澤那一代的OIer也沒有想到他們的努力會使上海在NOI2019進入3個集訓隊。但這一切,都在不久的將來發生了。
所以我們在學習知識之余,也要想一想我能為我身邊的OIer做些什么,我能為整個學校做些什么,我能為整個市做些什么,我能為整個OI界做些什么?知識層面上的貢獻有:出題、講課、寫論文等。另一種貢獻是文、史、哲層面上的,比如Tangenter寫《整型溢出》一書整理2016-2019年的OI歷史。即使我們還沒有達到為別的OIer做事情的階段,我們也要了解別人給OI界帶來的貢獻,我們也要對那些為我們付出過的前輩們懷以感激,懷以敬意。
三.渺小而卑微的堅持
時間、運氣、命運對OIer們來說是殘酷的字眼。再強的OIer,也有退役的時刻。再努力的OIer,也難以保證他在省選或NOI一定能夠有和他的付出對等的回報。這是很多OIer心知肚明的事實,也是我們無力感的根源。
也正因為此,有的人選擇了把OI當成生命中的過客,沒有對它付出過多的精力和情感。但另外一些人仍然把OI當作自己的歸宿,甚至當成生活的全部。究其原因,是因為他們給OI這個詞賦予了太多的意義和價值。
他們堅持停課,堅持與班主任老師、甚至家長“對抗”,堅持自己心中的目標。他們舍棄了睡覺時間來打cf,舍棄了文化課來刷模擬賽。有時,他們要面對的是孤獨、不理解和對自己前途的恐懼。你可以說,這是堅持、執着、勇往直前,但在命運面前,這是渺小、卑微的。一場考試的結果是難以預料的,一個字符之差就可能是100分與0分之差,一個部分分之差就可能是20多名的差距。最勤奮的人,也不敢說,自己能夠掌握自己的未來。
OIer之外的人對他們有兩種極端的態度。一種是以競賽的風險為理由,勸說(甚至逼迫)他們放棄OI競賽而去搞高考。這些人否認OI給他們帶來的意義,沒有看到他們在OI方面的付出。也許從數學期望的角度,這是較優解,我們不必做過多的批判。但這種態度殺滅了他們的純粹的夢想,給他們的青春留下無法抹去的遺憾,甚至傷痕。另一種是盲目地支持,為了走這條路而斷絕他們的一切后路,放棄一切OI之外的事務。人不是機器,過度的、長時間的投入是否會產生和這種投入成正比的收獲,是不好說的。即使成功了,它能否補償他們所失去的東西,也是不好說的。這種態度產生的根源是沒有客觀地認識到OI的風險,把競賽和高考的兩套評價體系完全地割裂開來,甚至當成對立面。
我們應有的態度是怎樣的呢?應該是一個朋友的角色。我們可以在他們考砸的時候予以安慰,可以在他們考好的時候予以鼓勵。我們可以和他們一起討論題目,一起學習算法,一起打模擬賽,甚至在空閑時刻聊一些游戲、漫畫的內容。我們既要提供助力他們成功的實質性幫助,也要想方設法緩解他們的壓力感和孤獨感。當然,我個人認為,不必對他們的選擇做過多的干預,因為我們很難完全理解他們的內心想法,很難影響也不應去影響他們的命運。至於決定他們是選擇堅持還是放棄,應該是老師和家長所做的事情。
如果你覺得他們離你很遙遠,請你不要像某些人一樣用好壞利弊簡單地評判他們的選擇,請你不要抱着“與我無關”的態度。
如果你正好就是那些選擇孤注一擲的OIer,請你相信有無數的OIer是支持你的,請你相信你的付出終將會在某個時刻回報你,請你相信無論怎樣,你在這個過程中成長了、收獲了。但也要告訴你,既然有勇氣堅持走下去,也要有勇氣承擔它帶來的一切結果。
后記
其實我寫這篇博客的想法,可以追溯到北大集訓期間LCA給我們講的一些話。在他的講話過后,我了解到了OI diary,我了解到了OI survey。我看到了有一位前OIer去主動地查找資料,以一個選手的視角記錄前幾年OI界發生的事情,甚至有一個人想編撰一部完整的OI史。我發現OIer們做了很多學習知識之外的事情,例如對自身價值的探索,對學習競賽的意義、乃至生命的意義的探討。這種東西既體現在某一小群OIer所寫的長篇的文章里面,又滲透到了很多OIer博客里的隨感。於是我也對OI界的一些現狀做了簡單的思考,整理成了這篇博客。
如果從寫文章的角度來說,第一、第二節可以構成一個完整的主題,而第三節顯得有點畫蛇添足。但是在我身邊真的有很多選擇孤注一擲地搞OI的人,其實在我的學校里就有,而他們面臨的環境並不樂觀。我特別想為他們說一些話,卻不知道何時能說,卻不知道從何說起。所以我就在這個機會為他們說出我的心里話。
最后,感謝你能夠讀完這篇博客,也希望這份思想的火炬永不熄滅!
鏈接:
[1] https://www.zhihu.com/question/333860946/answer/755528534
[2] https://www.luogu.com.cn/blog/ouuan/to-be-a-good-problemsetter
[3] https://etaoinwu.com/blog/on-teaching-and-learning/
[4] http://vfleaking.blog.uoj.ac/blog/909
[5] http://vfleaking.blog.uoj.ac/blog/4