破事氵題

Luogu P4281
求三個點的 LCA。其實就是模板的變式。
一種暴力求得三個點的 LCA 的方法是:
設三個點爲 \(x,y,z\),求出 \(\text{LCA}(x,y),\text{LCA}(y,z),\text{LCA}(x,z)\),求出 \(x,y,z\) 各自與上面的三個 \(\rm LCA\) 的距離之和,比較一下那個點距離三個 \(\rm LCA\) 的距離之和最小即可。
這種做法優點是易於理解,缺點是需要跑 \(\large \textbf{12}\)\(\rm LCA\),常數極大。卡常也不算難,加上 O2 和快讀就能過了。
有時間的時候再補一下更優的解法吧。


[USACO08OCT]Watering Hole
比較明顯的一個套路。
如果沒有打井,這題就是裸的最小生成樹。於是嘗試去掉打井這個操作。
分析打井這種行爲。井水從哪來的?從地下水裏來。
那麼就將打井看作是將當前格子與源點 \((n+1)\) 連一條邊就行了。


CF52C
如果沒有環就是裸的線段樹區修區查。
分類討論。當 \(l\le r\) 時按照普通的模板寫。當 \(l>r\) 時把 \([l,r]\) 分成 \([l,n]\)\([1,r]\) 即可。


UVA1152
將條件整理得 \(a+b=-c-d\)
將等式兩邊看做兩個整體。扔進哈希表中處理即可。
使用 map 或 unordered_map 或手寫哈希表均可。
(map 似乎在 UVA 的老爺機上過不去)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章