我又來啦
鄭允臻
Sprout
要怎麼考資訊之芽?
Coding test
不太需要演算法知識
但靈活且有時有相當實做量
TLE & MLE
遇到非WA的verdict怎麼辦?
- 有時候RE&MLE是同一個
- 檢查複雜度
- 確認code跟自己想要的一致
- 壓常數
- 換寫法!
- wiwi : wassert()
TO DOs
不要被verdict侷限
Range query
有趣的區間問題s
- BIT
- Segment tree
- Treap
- Sparse table
- Sqrt - decomposition
- Mo's algorithm
- and more...
Tools to use
Classic
區間元素種類
https://www.spoj.com/problems/XXXXXXXX/
- 離線處理問題
- 把資料「排序」減少一個維度
- 本題:
- 把詢問按照右界排序
- 每次維護以目前的位置r為右界
- 左界在i的答案
- 巧思:維護目前最晚出現的val_i在哪裡
Offline strategy
SQRT decomposition
找[L,R]間第K小的數字
1<=N<=100000
1 <= a_i <= 100000
1 <= Q <= 100000
https://codeforces.com/gym/101161 pE
- https://cp.wiwiho.me/mo-algorithm/
- 區間詢問根號算法
- 把詢問[l, r]排序
- 把左界每k長度分一段
- 先按左界的塊排序(first key)
- 再按右界排序(second key)
- 時間複雜度O(n sqrt(q))
- 樹莫隊
Mo's algorithm
- Goal : O(1) update, O(sqrt(C)) query
- 找出第K大的數字是誰?
- 思考
- 暴力的作法?
- 可以縮小暴力搜尋的範圍嗎?
值域分塊
Adhoc
問[L,R]是否每個數都出現偶數次
(線性作法)
- 如果所有東西都出現偶數次會怎樣?
- 隨機大法!
- 區間絕對眾數
Random
Thank You!
Questions?
Copy of Palette
By Yun-Chen Cheng
Copy of Palette
- 42