如何度過oi的瓶頸期?
本人oi萌新。現在感覺十分迷茫。
有時坐在電腦前做一整天題都ac不了一道。看別人的代碼基本一點也看不懂,有的時候自己的代碼比別人麻煩很多,但是有的時候寫的又比別人短很多,感覺自己已經把解題思路表達完了,但是就是不對(不是答案錯,是根本無法正常輸出)。學過的數據結構都理解,解題思路也能想出來,但是就是不會代碼實現。
現在學習進程基本卡住了,別人代碼看不懂,聽別人講一直搞不懂細節。。。求助知乎神犇,現在我到底該怎麼辦。。。ps:沒有放棄這一選項。
多想題。想出做法就要儘力調出來,提高代碼實現能力。
另外個人感覺想不出來比寫不出來更難突破。
同OI蒟蒻一隻,大概剛度過瓶頸期不久(:3& 情況和題主的很像很像...就是什麼做法都想得出來就是實現到處都是不知道怎麼回事的bug...難受了很長一段時間...
其實大概還是碼力的問題吧,有時間盡量多上機什麼的,多思考,安利小黃鴨調試法(逃
我就是 在某個失眠的晚上突然想通了之前搞不懂的某個演算法...從此之後好像突然瓶頸就消失了誒...
還有一個個人覺得不錯的方法 就是 自己出題
嗯 沒錯 自己出題
學到了什麼自己覺得不是非常清楚的演算法的時候就可以自己出一道這個演算法的題目,然後自己動手寫這道題的條件測試數據標程什麼的 真的感覺比刷題有用!而且出完題你對這個演算法的各種考察側重點什麼的也能get到自己的認識~
共勉啦!
建議先找一個給測試數據的oj刷題,比如51nod,codeforces。出錯的話設置斷點一步步運行,檢查哪裡出問題了。
當年做題是這麼做的:
首先自己想,如果思路很清晰就直接寫,如果比較模糊,就先嘗試在博客上自己寫一個題解,寫題解的過程能夠幫助梳理思路(畢竟寫的題解一定要讓別人能看得懂(類似於所謂的小黃鴨?))。這樣一來思路上有問題也能及時發現。思路不清晰的時候不要急於寫代碼。
在寫代碼的時候,如果不是很會寫,不要卡著不動了,很容易消極下去。建議上網找一份比較漂亮的標程,一行一行的讀,理解代碼的含義,實在看不懂就請教同學,比較精美的代碼可以直接照抄,按照自己的代碼風格稍作修改。
抄代碼並不全是一件壞事,參考神犇的代碼可以學到很多實用的代碼技巧。一氣呵成地敲完,以後碰到類似的題,也能快速想到代碼結構。對於很多演算法數據結構,背一份寫得比較好的模板也可以顯著提高代碼速度。(當然前提是你這道題真的會做了代碼真的看懂了)
本人當年主要是學習hzwer的代碼過來的。很喜歡黃學長的碼風,很多代碼都帶有他的風格。
思路是對的但是不能AC,一定要對拍調試。調試就要靠不斷地積累經驗了,錯多了就能快速察覺到有什麼地方可能出問題。
祝題主學習進步!
&另外歡迎點擊簽名訪問我的(荒廢已久的)博客&
自己出題+1
然而發現不可做
代碼實現困難一般是可以先根據每個演算法的裸題,水題進行練手和背版,背代碼是有熟悉的功用的,同時也能加深理解。
提個有點不科學的建議,oi如果沒有天賦,或者沒人帶,可以先從leetcode這種oj開始培養興趣。
為什麼呢,因為leetcode的題相對簡單,而且自帶case,另外各路高手提供的解題思路和答案。
等你leetcode刷的差不多了,最簡單的套路都會了,再去刷oi會發現oi是個更難,更嚴謹,並且沒有官方case的leetcode。
簡單來說,就和打遊戲一樣,如果一開始遊戲就很難,那很快就會對這個遊戲失去興趣,所以,需要一個循序漸進的過程。推薦閱讀:
※獲得ioi 金牌的選手申請進入MIT Stanford CMU 計算機(CS)本科的概率?
※初一noip初賽考跪還要繼續學oi嗎?
※LibreOJ管理員liu_cheng_ao是誰?
※如何評價HNOI2017?
※如何炸掉提交答案題的checker(逃?