今天覆習了kmp演算法等。
今晚做題的時候,看懂了三個題,但是第乙個提總感覺雖然知道他在說什麼,但是不會用**寫出來。
kmp演算法重點在於求next陣列,下一步就直接差不多,換了一點點而已。背過next陣列之後就很容易背s和p字串的了。
trie也算是乙個重點,模板為:插入節點以及檢索字串。插入字串是要乙個字元乙個字元的插入,先看看開頭也沒有這個字元,沒有新增(注意是哪乙個節點),有就順著往下。檢索就是沒有新增字元這乙個操作。
二叉堆操作有insert插入(插入到最後乙個節點,然後開始跟父親比較,進行值的交換,以及指標的變換等)gettop返回棧頂(返回heap[1]即可),extract刪除棧頂(交換堆頂元素跟堆尾元素,然後n--刪除堆尾,再讓堆頂元素與子元素進行比較,大根堆與大的換,小根堆就與小的換,然後變換指標),remove刪除某個節點(跟刪除棧頂元素一樣都要交換,但是不僅要向下比較,也要向上比較,這裡是先向上再向下的。
下一章樹的遍歷,開始了搜尋的過程。
這裡的樹的遍歷,就是用鄰接表進行的樹的遍歷。從根節點找根節點連著的節點,然後深搜。時間戳就是在進行模板的基礎上,深搜的第一步加上a[++t]=x;樹的深搜在計算深度時可以設計乙個d,根節點的深度為x,從x上延伸出的根節點的深度都為x+1,隨著深搜的進行乙個個的加。樹的重心是樹上某個節點,它作為重心的條件是去掉這個節點,剩下的節點組成的小樹深度最大值最小,改動方法很簡單,用size陣列儲存某個節點所連的樹的大小。
連通塊是普通的深搜,但是起點不是1了,而是所有的點,並且進行標記,當深搜過一次之後,在繼續遍歷,沒有被標記連通塊數量再加1,直到遍歷完所有的點。。
樹的廣搜遍歷很簡單,就是(佇列裡面)取出來、放進去、取出來、放進去……。
今天就看了這點東西,剩下的今天,額,8/11再看看,今天正好看完第三章~
訓練日記 20161024
初賽好像不會掛了,好開心!版權原因,不上傳題目。題意 求1 n n 1000 的排列中逆序對恰好為 k 個的排列數目。多測。題解 f i j 表示前 i 個數,逆序對個數恰好為 j的排列個數,易得轉移方程f i j i 1k 0f i 1 j k 用字首和優化可使複雜度降為o n2 題意 對於乙個長...
訓練日記 20170324
長久不更新部落格了。期間經歷了恰好被ag線踩的wc,經歷了漫長痛苦的小高考準備。現在終於可以重整旗鼓,向省選進發!幾個月來,唯一不變的是我仍然是個超級蒟蒻 版權原因,不上傳題目。題意 最小樹形圖 去年就接觸 聽說 過的演算法,一直沒有真正寫過。因為各種奇怪的細節錯誤,調了好幾個小時 比如找環時沒有判...
訓練日記 20170328
今天的題目似乎很水 好多人都提前ak離場了,於是提前一小時收題。但是我還是各種不會。思維江化?話說,聽到一句很有趣的話 山不在高,有林則徐 水不在深,有江 題意 給定一棵有n n 105 個節點的有根樹,編號互不重複。詢問有多少棵子樹內節點編號構成乙個連續區間。題解 水題,對於每個節點 i 記錄以該...