本文將收錄一切我認為對我十分有幫助的他人的博文以及我認為有價值的我自己的原創文章。
引言
有人說:程序=算法+數據結構,所以OI=程序=算法+數據結構。
在我看來,這句話的前半句是對的,但后半句則有本質上的錯誤,我自己提出了一個公式:
OI=數據結構相關算法+容器+應試能力+數學+碼力
我來解釋一下吧。
- 數據結構相關算法
所謂“數據結構相關算法”是我自己生造出來的一個名詞,因為在OI中的代碼與實際工作用的工程代碼完全不同,工程代碼講究OOP,要求數據結構與算法分開,而在OI中,一場比賽往往只有幾個小時,分配給一道題的時間最多最多只有2個小時,使用OOP是不現實也無意義的,即使確有必要,OIer頂多只需要用帶有簡單成員函數的結構體。顯然,OI中的代碼比較混雜,算法是依附於代數結構而存在的————代碼長度決定了這一點,而OIer學習時往往也是按照數據結構分類的,比如先統一學圖算法,再統一學樹算法等等,算法往往就是對一種數據結構的使用與操控,因而應該將算法稱之為:“數據結構相關算法”。
- 容器
如果是上一個“數據結構相關算法”對應算法的話,這個“容器”就應該對應數據結構,之所以不稱之為數據結構,因為了防止與前一個相混淆,還有一個原因是容器一般是為了提高得分的使用的,完全不使用容器也可以得分,但往往不能AC,使用一般的容器便能提升很多得分,而使用與上一因素“數據結構相關算法”最匹配的容器才能保證AC,容器更像附加上去的一個東西,而非得到正確輸出的代碼的一部分,缺了“數據結構相關算法”程序就可能爆零,但缺了容器程序至少還能得分(數據太弱的時候也許還能AC呢)。
- 應試能力
這點十分重要,OI畢竟也是千軍萬馬走獨木橋,相對與高考,OI的人數要少得多,然而這座獨木橋也窄的多,兩者綜合來看,競爭實際上比高考激烈的不只是一點點,再加上一年只有一次比賽,高一基本沒人能得到報送,高三要准備高考,也就是說只有高二一年有機會,而一年只有一次比賽,CSP-S或是省選或是NOI,考砸一個數年的努力便全部化為泡影,而發揮不穩定也是OI的垢病之一,往往一個很小很小的小錯誤就可能少得100分,這100分,就是退役與保送的差距,而OIer只有高二一年!只有一次機會!只要有一點失敗,就會抱憾退役......許多人因此十分緊張,很多OIer都在回憶錄中表示退役之戰前的日子比高考前的日子還漫長、還難熬————這緊張過分的情緒無疑會再度增加發揮不穩定的可能性,導致退役......因而,應試能力十分重要,開始前心態平和,考試時穩定發揮,考試后不過分或喜或悲是十分重要的!我因此把他提到了第3位,位於數學和碼力之前。
- 數學
這點的重要性毋庸置疑,高級算法,如DP,DDP,樹論,線性規划等都是需要數學的,數學能力是一個人學習能力與智商在一定程度上的綜合體現。
- 碼力
又是一個奇怪的名詞,這個詞的意思是Coding的能力,綜合包括了對所使用語法的掌握深度,對IDE和操作系統的運用能力,把腦中的思路轉化為代碼的速度和成功率等等,甚至還包括敲鍵盤的速度(手速)。無疑也是十分重要的,如果碼力欠佳。就會發生一看題目啥也不會,一看題解就秒懂的尷尬的筆試型選手,往往在OI這個都獨木橋上走不遠。但實際上由於大部分人碼力都沒有什么問題,所以我把碼力這個因素排在了最后一位。
(以下內容尚不完善,有時間后再充實與更新)
我想收納的文章有上百篇,但暫時沒時間一一添加鏈接,以后有時間再說吧。
