前言
想說趁著寒假有空的幾天來把題數寫到200題,雖說沒有很多(當然不是從0),對實力貧弱的我來說,也還是花了不少時間,先把 CPE的選題 補完,途中也解了不少水題來騙題數,話雖如此收獲也還是不少,真是感謝了沒放棄的自己。
接著是題目的部分,如果一題一題貼顯得沒甚麼意義,嘛~其實是嫌麻煩就是了,再者幾乎網路上也都有不少答案,所以索性統整在這一篇,再加上一些小小的筆記,或許可以幫到一些有相同疑問的人。
在程式碼內多少有些註解,可以加減 參考 。
題目
寫的 code 都丟進 Repo 裡了,這裡僅列出部分。
Stack 的相關操作:
Backtracking 回溯法:
KMP algorithm:
關於 KMP
LIS:
關於 LIS
497 - Strategic Defense Initiative $O(N^2)$
103 - Stacking Boxes $O(N^2)$
10131(1) - Is Bigger Smarter
10131(2) - Is Bigger Smarter $O(N^2)$231 - Testing the CATCHER $O(N^2)$
用Binary search加速達到 $O(NlogL)$
LCS:
關於 LCS
注意事件的相對順序和輸入的要再做處理
Disjoint Sets (並查集):
關於 並查集
793(1) - Network Connections
793(2) - Network Connections (多了按秩合併,但效果不顯著,要不就是我寫錯了…)找規律:
10642 - Can You Solve It?
11000 - Bee
846 - Steps10170(1) - The Hotel with Infinite Rooms
10170(2) - The Hotel with Infinite Rooms費式數列
Others:
存成一維陣列,如果對稱,將會是迴文,有負數即為不對稱(題目定義)
每一種Base都去試試看即可
找從哪裡起始的字典序會最小
判斷兩字串中 “不同字母的數量” 的遞增數列是否相同
Binary search
Recursive
將每個 word 轉成小寫後做排序,這樣就可以統計有多少個 ananagram
STL的一些操作,這裡要提的是
std::inserter
,以前沒用過,不曉得它的用途,稍微查了一下[1], 大致理解是std::inserter
他會回傳std::insert_iterator
,而它可以幫助本來無法配置記憶體空間的 function (ex.set_union
) 來進行增長,它會呼叫各 container 的std::insert
來進行插入。
[1] 參考資料
http://en.cppreference.com/w/cpp/iterator/inserter
http://en.cppreference.com/w/cpp/iterator/insert_iterator
https://icoderme.wordpress.com/2010/01/28/insert_iterator-and-nserter-in-stl/
http://blog.csdn.net/effective_coder/article/details/8733853