• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-19  評(píng)論-1  文章-0  trackbacks-0
            在ICPC比賽中,個(gè)人能力方面,如果粗略地分的話,大致可以分為算法能力、代碼能力和查錯(cuò)能力。那些大學(xué)才開(kāi)始參加比賽的選手,寫(xiě)代碼的基本功一般會(huì)比較扎實(shí),主要瓶頸應(yīng)該是算法能力。而對(duì)于OI轉(zhuǎn)ICPC的選手來(lái)說(shuō),代碼能力往往是最大的缺陷。隨著OI轉(zhuǎn)ICPC的選手逐漸增多,代碼能力的問(wèn)題愈發(fā)暴露了出來(lái)。

            一、如何定義代碼能力

            Comars曾經(jīng)給代碼能力作過(guò)一個(gè)比較準(zhǔn)確的定義。2004年暑假時(shí),Comars曾經(jīng)說(shuō)過(guò):他認(rèn)為150行以?xún)?nèi)的題目,他的1Y率非常高,并且保持穩(wěn)定;而當(dāng)代碼長(zhǎng)度超過(guò)150行以后,1Y率就開(kāi)始急速下降了。如果我們畫(huà)出一條1Y率的曲線的話,150行就是一個(gè)轉(zhuǎn)折點(diǎn)。我們不妨認(rèn)為,150行就是Comars當(dāng)時(shí)的代碼能力。一年以后,經(jīng)過(guò)努力,Comars把代碼能力提高到了250行。不過(guò),這已經(jīng)是后話了。

            二、如何提高代碼能力

            我一直覺(jué)得寫(xiě)程序和寫(xiě)文章是一個(gè)對(duì)很好的類(lèi)比。

            寫(xiě)文章需要先從宏觀入手,構(gòu)思文章的結(jié)構(gòu)。寫(xiě)程序同樣需要。一個(gè)好的結(jié)構(gòu),就是一個(gè)好的開(kāi)始。一個(gè)好的開(kāi)始,是成功的一半。
            一篇好的文章需要各種句式和詞藻的合理組合。體現(xiàn)到寫(xiě)程序上來(lái),就是一些單句以及三五行的小結(jié)構(gòu)的熟練使用。這些都是需要平時(shí)總結(jié)和積累的。

            但凡文章寫(xiě)得好的人,一定看過(guò)很多別人寫(xiě)的文章。同樣的道理,多看別人的程序,用心地去看,也可以提高自己的代碼能力。
            我鼓勵(lì)隊(duì)員去看別人寫(xiě)的程序,特別是像Comars這樣的選手寫(xiě)的程序。從優(yōu)秀的程序中,我們可以體會(huì)別人良好的程序結(jié)構(gòu),同時(shí)也可以學(xué)到很多寫(xiě)程序的技巧――三五行的小技巧。在和Comars做隊(duì)友的兩年時(shí)間里,我通過(guò)看Comars的程序,學(xué)會(huì)了很多小技巧。逐漸地,我覺(jué)得我寫(xiě)的某些程序已經(jīng)和Comars有點(diǎn)相像了。
            那么,如果身邊沒(méi)有Comars這樣優(yōu)秀的選手可以借鑒,該怎么辦呢?其實(shí)沒(méi)關(guān)系。任何一個(gè)程序都是可以看的。一個(gè)程序,就算寫(xiě)得再差,總還會(huì)有一兩個(gè)閃光點(diǎn),要想辦法把它們找出來(lái)。另外,程序里寫(xiě)得不好的地方,也要一一找出來(lái)。
            讀程序,從某種角度來(lái)看,就像讀史。好的歷史是用來(lái)借鑒的;不好的歷史則應(yīng)該引以為戒。讀程序也是一樣,擇其善者而從之,其不善者而改之。

            三、謹(jǐn)慎地對(duì)待STL和SCL

            STL - Standard Template Library。在ICPC的選手中,STL是相當(dāng)受歡迎的。的確,如果STL用得好,程序可以精簡(jiǎn)很多。既提高了編程的速度,也提高了編程的準(zhǔn)確性。
            SCL - Standard Code Library,就是標(biāo)準(zhǔn)程序庫(kù)。對(duì)很多選手來(lái)說(shuō),SCL可是命根子啊

            我覺(jué)得STL和SCL都不是壞東西,但是需要謹(jǐn)慎地使用。

            我向來(lái)不主張隊(duì)員一進(jìn)隊(duì)就開(kāi)始用STL(雖然這種現(xiàn)象普遍存在 )。我認(rèn)為,STL的作用是錦上添花,而不是雪中送炭。比方說(shuō),一個(gè)heap寫(xiě)得很熟練的隊(duì)員,我覺(jué)得他可以偷偷懶,用一下STL。但是,那些不太會(huì)寫(xiě)heap的隊(duì)員,就不應(yīng)該用STL里的heap。因?yàn)椋麄冋嬲龖?yīng)該做的是掌握寫(xiě)heap的能力――這才是最本質(zhì)的代碼能力。
            學(xué)會(huì)用STL是件很爽的事情。但是須知有所得必有所失。如果過(guò)早地接觸STL,會(huì)讓你失去很多鍛煉代碼能力的機(jī)會(huì)。

            至于SCL,我的主張是盡量不用。
            不可否認(rèn),隊(duì)里確實(shí)有一些人SCL用得很好。但是,我至今仍然沒(méi)有見(jiàn)過(guò)一個(gè)SCL用得很好,同時(shí)有擁有很強(qiáng)的代碼能力的人。同樣是有所得必有所失,你平時(shí)習(xí)慣了去抄程序,必然少了很多自己構(gòu)思程序的機(jī)會(huì),從而影響代碼能力的提高。
            當(dāng)然,我也不是完全反對(duì)去使用SCL,偶爾用一下也是可以的,例如在比賽中。但是,需要注意的是,一定要用自己整理的SCL。我見(jiàn)過(guò)有人拿著一本別人整理的SCL,雖然內(nèi)容很齊整,但是我沒(méi)見(jiàn)他用對(duì)過(guò)。因?yàn)檫@本SCL不是他整理的,他自己都不知道每個(gè)程序在使用的時(shí)候應(yīng)該注意些什么,于是一用就錯(cuò)。


            算法名言(含義深刻啊)

            1.算法的靈魂――數(shù)據(jù)結(jié)構(gòu)+算法=程序

            2.剪枝是搜索的關(guān)鍵。

            3.可貪則貪。

            4.枚舉是最容易實(shí)現(xiàn)的,但也是最慢的。

            5.難題往往需要另辟蹊徑。

            6.算法并不是孤立的,而是可以結(jié)合在一起的。

            7.不做爛題水平也會(huì)下降,但不想難題永遠(yuǎn)不會(huì)提高。
            posted on 2010-10-11 17:37 孟起 閱讀(444) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 心得總結(jié)
            亚洲国产精品久久久久| 久久久久久久波多野结衣高潮| 狠狠88综合久久久久综合网| 99久久精品毛片免费播放| 国产精品99久久久久久猫咪| 久久伊人中文无码| 久久亚洲欧美国产精品| 久久久久18| 久久夜色精品国产噜噜噜亚洲AV| 国内精品久久久久久野外| 中文字幕无码久久精品青草| 国产亚洲欧美精品久久久| 久久久久这里只有精品 | 波多野结衣AV无码久久一区| 东京热TOKYO综合久久精品 | 性做久久久久久久久久久| 久久婷婷五月综合97色一本一本 | 久久久久国产一级毛片高清板| 久久人人爽人人爽人人爽| 亚洲国产精久久久久久久| 久久天天躁狠狠躁夜夜躁2O2O| 精品久久久久久无码中文字幕| 久久精品人成免费| 久久伊人色| 免费精品久久久久久中文字幕 | 久久精品九九亚洲精品| 国产欧美久久久精品影院| 亚洲伊人久久成综合人影院| 国产精品免费久久| 成人精品一区二区久久久| 国产精品久久影院| 国产精品一久久香蕉产线看| 亚洲欧美日韩中文久久| 亚洲va国产va天堂va久久| 少妇精品久久久一区二区三区| 亚洲午夜久久久久久久久久| 久久久精品久久久久影院| 思思久久99热只有频精品66| 99久久做夜夜爱天天做精品| 一本色道久久综合狠狠躁| 久久久久久久人妻无码中文字幕爆|