世界頂級選手的刷題之道

dreamoon,知名中國臺灣籍ACM選手,此爲他的codeforces曲線:算法

關於中間突降的那段,還有個小故事:學習

當時dreamoon已是世界上的頂級選手,甚至前一場的div1他排名第3!(當時cf的分制和如今不一樣,因此如今看起來只是個紅名)網站

因爲他沒有拿到過div2的第一名,因而決定一直故意掉分使本身有資格打級別較低的div2場。this

這個機會終於到來,but當dreamoon決定在這一場暴露大佬本質並拿下第一之時……他被狙了。google

沒錯,被一個更牛逼的神仙開個小號調戲了……翻譯

迴歸正題來說。code

dreamoon做爲一個世界頂級選手,罕見地給全世界衆萌新發放了福利!本期爲他在codeforces上的blog:If you ask me how to improve your algorithm competition skill, I will give you the link of this blog.(若是你問我如何提升算法競賽水平,我將給你這篇博客的連接),原文連接爲:http://codeforces.com/blog/entry/16599blog

如下爲AlphaWA的翻譯,若有不許確之處,見諒;另,博客下的討論請讀者移步原文連接查看,此處就不作提供了。教程

正文:get

最近一年有許多人在發消息問我一樣的問題,因此我決定建立這篇博客。

醜話說在前頭,讀完這篇博客你可能會感到失望,由於我並不知道什麼特殊的捷徑。其實個人學習方式浪費了我許多許多時間。

如下是你應該已經知道的兩個基本點:

1.練習、練習、不斷地練習!思考並解決題目花費了我許多時間,我以爲平均一天我要花5個小時在這上面。

2.與強者結交。我認識不少高水平選手,好比: arosusti, kelvin, peter5021(0O0o00OO0Oo0o0Oo), seanwu, Shik, takaramono, tmt514, ...若是我遇到那種幾個星期都想不出來的題,我基本上都能從朋友們那裏獲得解答。

而後我說一下我本身怎麼訓練的。

我刷題的時候可能有兩種刷題順序:

1.從解決人數最多的題目開始;

2.作題號相連的題目並嘗試所有解決他們。

我不知道哪一種更好一點,但我常常改變策略。而後當我以爲這個OJ已經沒什麼我能解決的題目之後,我會換個OJ繼續這麼作。

實際上我以爲刷題順序對我來講並非很重要。當我要閱讀並解決某OJ上90%的題目時,你以爲順序還重要嗎?我真不知道哪一種順序是最好的,因此我把大多數題都作了。

列幾個我用的OJ吧(一些中國臺灣的OJ不對外開放就不列了啊):

1.Codeforces。我認爲cf是如今最好的OJ。好用,而且大部分題目都有教程。

2.Topcoder。tc上有不少好題。甚至有時我以爲某些250分的題都很巧妙。這上的大多數題也有教程。

3.SGU。我以爲sgu是最難的OJ了。上面不少題都要用到不常見的技巧。

4.Timus。這個OJ上有不少較難的比賽,我認爲對團隊訓練有益。

5.ProjectEuler。這上有不少好的數學題。並且你解題後也能夠在論壇上看看別人是怎麼解決這個問題的。

我認爲平時練習和正式比賽是兩種徹底不一樣的感受。因此有時我會在OJ上隨機選一些題目造成一個題集而後設定時間限制,來訓練我本身。可是如今Codeforces已經有了虛擬比賽的功能,因此這件事咱們能夠在cf上更簡單地完成。

我不按專題刷題。正相反,我是在遇到一道不會的題目時再去學這個題目相關的專題。我會問朋友們這個題跟哪些專題相關,而後去谷歌一下。(譯者注:通常後期都是這樣刷的,顯然你前期交不到大佬朋友……因此你們適當汲取,切忌邯鄲學步)

不少時候即便我能解決這道題我也會閱讀一下別人的AC代碼。有時咱們會發現一個徹底不一樣的解決方案,多是時間複雜度更低,也多是代碼更短。

我也沒什麼特殊的網站和學習資料了,就是遇到了就google吧。

這就是我學習算法競賽的全部方法了。

END~

相關文章
相關標籤/搜索