最近碰上的幾個題目使我開始注意到模板的使用是多麼的有力。
先是上週的微軟比賽第二場——當然我被淘汰了——第一題上來就是一道網路流(當然ac演算法是找增廣路),我可是一點網路流不會,但是恰好手頭有網路流的標程,於是借來一用,修改輸入輸出,然後就騙了10分;然後是劃分樹這個破玩意,我要是比賽的時候肯定寫不明白那一堆-1,+1,調就得調個一小時,那豈不是耽誤事麼? 還好,acm有一條規則很關鍵——「可以攜帶紙質參考資料」,這樣這些容易錯的地方我完全可以抄在本上,然後到時候照著打就行了。而且但凡劃分樹的題,很少在劃分樹里做文章。所以即使不明白那塊區間到底是怎麼縮的,一樣能幹出事來。類似地,treap的左旋右旋函式我也寫成小模板了,這樣比賽的時候不會把自己給旋進去。
乙個資料結構或演算法能理解自然是最好的,不過本人智商有限,總有我不能理解透的演算法,況且有的東西即使理解了,也特別容易寫錯。acm的特殊規則就是幾乎沒有什麼調程式的時間,而且他知道你有模板,所以根本就沒給你時間調基本的資料結構,一切都是應用級別的考量。所以在這個背景下,模板和筆記的存在顯得極有意義。如果是noi這種不允許帶資料的比賽,自然就沒有意義了。
ACM練級日誌 POJ 2155 1151
這些日誌僅供以後防止自己出現過去犯過的錯誤,起到乙個註記的作用。若其他的acmer覺得有用的話,本人也感到欣慰 最近一直在練線段樹,說說線段樹的 染色問題 和 計數問題 比如poj的2155,level 2的一道題,入門二維線段樹,這道題一開始被我當成了染色問題。本來想用每個node去記錄這一段是0...
ACM練級日誌 POJ 1389
這個也是乙個矩形面積並的問題,和1151幾乎一模一樣,不同的是,資料範圍有點不同 1151是100個矩形,每個矩形的座標是小數,而這個是1000個矩形,每個座標在50000以內。50000這個數看上去還可以,連離散化都不用 1151因為是小數所以還必須得離散化 理論上複雜度是2000 log5000...
ACM練級日誌 POJ 2318 叉積的簡單應用
最近開始學習計 keng 算 die 幾何,第一道入門題就是這道了。本題最核心的問題,就是如何判斷乙個點在直線 線段 的什麼位置。這一點叉積可以很容易地做到。設直線 線段 的向量為s e,詢問點為p,那麼我們只需要計算一下 s p x s e,如果大於0,說明s p 順時針旋轉會達到s e,等於0說...