優美的暴力——莫隊
阿新 • • 發佈:2020-08-13
普通莫隊
不是很想講,所以去網上找找吧,有時間補充。
帶修莫隊
多了一個修改的操作,(應該是單點修改,窩還沒見過區間修改的),改了一個點可以當做將一個數移除並加入了一個數,類似普通莫隊也可以暴力來做。
回滾莫隊
在當前已知的區間中要加入元素或移除元素來得到新的答案,可能其中一種操作很難做到 \(O(1)\)。
那麼就想到都變成一種操作。對於一個塊內的 \(O(\sqrt n)\) 來統計答案。
如果移除元素不好做就按下面的方式排序
struct query { int x, y, id; friend bool operator < (query q1, query q2) { if (num[q1.x] != num[q2.x]) return num[q1.x] < num[q2.x]; return q1.y < q2.y; } }q[MAXN];
詢問的左端點和右端點不在一個塊內的話,對於左端點在同一塊內的這一型別的詢問,右端點一定遞增,左端點左端點所在的塊暴力計算 \(O(\sqrt n)\),右端點的可以繼承所以是 \(O(n)\)。
如果加入元素不好做也類似上面的。
樹上莫隊
用尤拉序將樹上變成序列上
想不到這麼短吧,有時間再改