為什麼有時候自己做了一些題 然後過了一段時間就忘了怎麼做的?是理解的不夠透徹嗎?那要怎麼做?

acm訓練問題= =

雖然有在寫題解 但是有些不是自己想粗來的題目總是忘記,難道說這是理解不深刻?

還有學習的進度不如別人快怎麼辦?(感覺自己理解能力不是很好呢……)

請各位大神吐槽=_=


做題又不是要把每一題記下來,你看你數學題一個月前做的能記得答案嗎?需要學會的是自己為什麼會這麼想,為什麼要這樣做。

做題是在鍛煉自己的思維,明白處理一類問題的方法是怎樣的,有些題目可能當時花了很久才想出來的,回顧的時候哪怕連題目都忘記了只要比起之前相對輕鬆的做出來,不是就說明這樣的訓練是有效果的嗎。

進度不如人要麼多思考思考提高你已花的時間的價值,要麼多花時間訓練唄,不過感覺題主目前水平大概還是多做做題目提高知識儲備比較有效?積累一段時間做題應該就會慢慢有感覺了。順便帶一句,少刷水題。


(稍微修改一下答案,畢竟咱的友善度五顆星啦)

雖然常見的觀點是做題需要理解「題目背後的故事」,但是殊不知這種理解對智商有要求。君不見網路上很多以「Understanding Xxx」為標題的文章,就是說明對於相同的事物,不同的人有不同的理解。

當然題主在問的就是,理解不夠好、速度不夠快,怎麼辦。

我現在需要探討的是,既然題主知道需要理解,不能死記硬背,但是卻做不到,應該怎麼辦。

我覺得:

  1. 當然需要有 note taking,畢竟這是一種比較有效地彌補記憶力不夠好的手段。我覺得自己的記憶力可以的,我覺得我應該是有意無意地把相似的東西記憶在一起了(證據是,我在回想一個東西時,會先想起相關的東西,然後順勢把想要的東西想起來)。所以說,記憶本身就是對內容做 indexing 的過程,note taking 一方面是做 indexing,另一方面是做 persistent(咱這裡假設人腦是個資料庫 XD)。
  2. 另一方面,我感覺還是要多鍛煉一下找 pattern 的能力。做完題目,應該跟過去已經有的題目比較一下,看看相似的點在哪裡,不相似的點在哪裡。如果不是自己想出來的,應該還想想自己為什麼想不出來。
  3. 最開始沒有回答學習進度這一條。= = 其實咱也不太知道,我感覺應該有一個學習計劃,就像 21 天背完 GRE 單詞一樣,應該能夠一定程度地改善拖延症。

(感覺這個答案跟最開始答案的觀點有點區別,輕拍)


光把個題的解法記住有個球用?到頭來遇個沒見過的題難不成就不做了?包括ACM在內的競賽里出個見過的題那種絕對就是送分的題。

所以啊做練習的時候需要理解這些題目,用到的模型是為什麼用?用這個演算法是什麼原理?這些你都理解了的話聯繫的目的才算是達到了,這樣下次看到題目才會想到用什麼方法,不然做題有啥用……


多想想吧。。把模型都抽象化,好記點


假設你的腦中有個內存,你醒來就載入了操作系統,要做題了,你要從硬碟中調出類似的題目來解題。

首先假設你做題看了題解,看完特別思考,於是對你來說這個題是一個獨特的模型,於是你獨立有塊地方存著這個,這類題目多了之後意味著你要去for然後找咯,但是人會遺忘,然後效率低,很可能你就忘了,反應不過來。

如果你很好地分析了模型,抽取了特性,那麼對你來說這題可能是個離散化+dp,或者圖論啊,具體還可以細分,然後有一些使用的技巧之類的,這樣的話相當於離散化和dp連了條邊到這題,兩者的關聯增加,你搜索的是思路而非具體的題,可以有不少相關的類比輔助記憶,整個記憶的規模小了但信息量更多了。

也就是說重要的是增加邊,減少節點,不斷化歸,不斷抽取特性,不斷建立整理具有共通性的模型。這與oo,設計模式有共通之處。


大腦有垃圾自動清除機制,潛意識裡沒什麼實用價值又炒雞占內存的東西,第一時間刪刪光……

匿了,別來打臉……


做題不是鍛煉肌肉,而是鍛煉思維,因此要經常總結,下次來了同樣或類似的問題,對號入座就行了。你能有多大的提高,在於你花在總結的時間有多少。


對我來說,一般來說自己做出來的題目,或者自己百思不得其解的題目記得最牢。另外理解能力我覺得是可以培養的。(逃……


同意上面說 智商不夠的。 以前我也不願意承認智商記憶不行。但實實在在有的人就是讀文章一遍就會背,有的人要背一天。 你寫會一個題,要調試來調試去,思前想後。而我看過一個計算機大神(忘記名字了,好像是喝咖啡時想出最短路徑演算法的呢個人),說自己上機的代碼,幾乎都是一遍運行成功。自己不能什麼時候,腦子裡想好,代碼打出來就成功,自己就得重複複習這個題,把這個題弄明白了,可以隨時一遍打出來就能用,應該就可以了吧。


推薦閱讀:

如何理解benders decomposition在混合整數規劃中的應用?
動態規劃和貪心的本質區別是什麼?
希爾排序為什麼會那麼牛那麼快,能夠證明嗎?

TAG:演算法 | ACM競賽 |