當你絞盡腦汁也想不明白一個演算法或者數據結構的時候,你會怎麼做?

比如SAM這種東西。。


這時你就需要這個 https://www.coursera.org/learn/learning-how-to-learn !

--- 下面是扯淡 ---

說起來 SAM 還是我告訴陳立傑的。雖然直到他冬令營 PPT 發布,我都還沒學會(……)。所以總的來講還是按照他的 PPT 學的。

學習這個事情,本質我覺得就是把一個表示學成另一個表示。但是普通人(比如我) working memory 太小,處理複雜概念的時候容易學了後面忘了前面的。所以我個人偏向找點合適自己的 encoding,告訴自己前面這些複雜的公式都在說些什麼。

再說回 SAM。我覺得這東西你這麼看,就是你現在有一個文本編輯器,初始是空的。你每次輸入一個字元,你就去字元串 S 裡面看看你當前這一行到底在哪裡出現了。所以轉移是個怎麼回事呢?就是說,你現在的字元串 T 在 {a, b, c, ...} 這些地方出現了,那麼現在變成了 T + t,那麼肯定在原來的地方往後移動一格嘛。但是不一定 {a, b, c, ...} 所有的位置下一個字元都是 t 啊?所以就是 {a+1, b+1, c+1, ...} 這個集合會被分成好多份。這就是後綴自動機了。每一個節點實際上就是代表了下標的一個集合。(啊。。就是常說的 Right

至於 len 是什麼東西,就是你看著一些下標的集合 {a, b, c, ...},比如說他們的後綴是 xyz,那麼看上去你讀一個 z,讀一個 yz,或者讀一個 xyz 都能到達這個集合嘛。但是又不盡然,因為可能出現 z 的地方還有一個 {a"},也就是說,你讀的這個字元串還不夠長,不夠把下表限制在 {a, b, c, ...} 這個集合內。這個時候就有 len() 啦,就是說你至少要這麼長,才能到達這個集合。有了下界肯定又有個上界,為什麼呢?因為你撐太長了,有些後綴就不夠這麼長了,就會讓這個集合變得更小。太短又會使得別的一些後綴加進來。這其實就是說這些集合形成了一棵樹嘛。。

-- 下面是扯淡的扯淡 --

我其實本來不想講 SAM 的,但是不小心寫了一段,想著可能對答主有點幫助,就留著了。

之所以答主這個問題不太好答,原因是人的類型還是不太一樣的。所以才在最開始貼了 Learn How to Learn 這個鏈接,我覺得是對人腦的一般研究,可能會更適用一點。

我自己感覺自己 working memory 不是太大,所以比如說腦內計算兩位數乘法就受不了了。但是對嚴格的公式或者圖形的感覺還算可以,所以我學東西、思考問題傾向於用紙,有了紙的話可以容易地把自己的一些想法 persistent,就更擅長了。不過感覺這樣有點太依賴草稿紙了。。沒有草稿就變成一個白痴了。。


問叉姐!


自己看不懂找人給你講啊 _(:3」∠)_


Claris大法好!

切PA不會第一時間翻Claris Blog,翻不出來就翻課件,再找不到就去問Claris w

第一代人肉搜題器Claris號上市w

順便打個偽`廣告:

----------輕小說 《Clariskpm的幸福生活》 火熱發售!


把腦袋當cpu,把草稿紙當內存,輸入一組測試數據,單步運行,觀察結果。

智商低沒辦法(?_?)


謝邀

那個誰還有那個誰,我覺得我們隊需要完善一下知識面,我最近在整理幾何模板沒時間,你倆誰抽個空把後綴自動機學了?

就醬


看點兔放鬆一下(偏


我會一隻擱置吧。。。到現在還不理解SAM的說。

沒辦法智商太低啦,抄了一遍了上面叉姐的講解還是無法理解。


後綴自動機:O(N)的構建及應用

你可以看看上面這個文章試試……


題主,你可以仔細看後綴樹Ukkonen的論文: https://www.cs.helsinki.fi/u/ukkonen/SuffixT1withFigs.pdf,再回過頭看後綴自動機就是自然而然的事情了...


哭到睡著


不想


想不明白的時候就搞一個例子在紙上一步一步代入演算法,看每一步的結果。搞懂以後,再看抽象的東西就容易理解了。


我屬於那種記性比較差,代碼能力比較差的選手,有很多東西我看的時候模模糊糊,一個東西肯定會給你留下印象,然後大概看看論文,代碼之類的很有幫助的,不過一個知識點肯定還是要形成你自己對它的理解,然後慢慢的做點題就好了。


先放一放,過兩天可能會自動領悟


我會去學點數學放鬆一下。

雖然大多數時候都是開知乎水水群放鬆一下//////

可恥地匿了。


發明一個數據結構不就完了嗎

我當年學不會splay就YY了某玄學平衡樹

結果發現只是學OI的人不會的東西而不是新科技


和智商有關。比如最高票答主郭曉旭,從初中開始搞信息學競賽,也沒能拿到NOI金牌,更不用說IOI。而他(注意是他,信息學競賽圈的不良風氣,就是『叉姐』開始的吧?)答案中的陳立傑,就不用多說了。


我以前都是問叉醬@ftiasch

演算法不會問叉醬

代碼調不通問叉醬

題目讀不懂問叉醬

不過已經好多好多年沒問過叉醬了

(っ╥╯﹏╰╥c)


我寫代碼和讀代碼很憑直覺,感覺很多時候真的像認識陌生人一樣,有需要緣分的感覺。比如,一段代碼,也許我馬上就能體會它的意思了,感覺像個老朋友很早就認識了;有時候代碼明明不複雜,卻覺得不得要領,百思不得其解,待讀懂了又不自覺的去貶低它,就感覺是認識了一個性格不投的人。

前面說了,我很憑直覺讀代碼。如果直覺哪裡有問題,我會嘗試解讀一下為什麼我直覺告訴我有問題,然後再去思考具體的代碼問題。當問題不解決的時候,如果不是像工作那樣需要立刻出成果的場景,其實我更喜歡把直覺上出現的問題解決了再繼續走下去,而不是頂著問題強行出結果。

如果解決不了怎麼辦。那就不解決了,繞道走也許是可行的,也許做到最後發現問題本身就沒有解或者沒有期待中的解。問題可以不解決,但是我覺得應該有個結論。


推薦閱讀:

bfs能否解決一切dfs 問題?
自編一道動規題,可以從哪幾個方面增加難度?
如何看待信息學競賽中的學校殺制度?
成為一個OIer/當過一個OIer是一種怎樣的體驗?
n個有重複數,求其一種排列使得前綴和絕對值的最大值最小,有較好的演算法嗎?

TAG:演算法 | OI | ACM競賽 |