題意:給定乙個n個數的序列,多次詢問,每次詢問區間[l,r]的mex
直接暴力顯然不可
區間[l,r]和區間[l',r']mex的情況:
(1)[l,r]和[l',r']的mex值不同:[l,r]的mex值在[l',r']中出現 或 原本在[l,r]中存在而不在[l',r']中存在從而成為[l',r']的mex值 (反之同理)
(2)[l,r]和[l',r']的mex值相同:區間內出現的元素相同或只有比mex值大的元素不同
類似莫隊的思想,如果已知[l,r]的mex值,那麼[l+1,r]的mex值會出現以下情況:
(1)與[l,r]的mex值相同
(2)[l+1,r]中沒有出現元素a[l]且a[l]成為了[l',r']的mex值
也就是說,只需要找到a[l]下一次出現的位置p,並把[l,p-1]中所有sg值比a[l]大的全都替換成a[l]即可
如果直接修改會t,那麼就可以利用線段樹區間修改即可
那麼我們就需要離線,按查詢的左端點為第一關鍵字、右端點為第二關鍵字排序
線段樹中,真正有用的只有葉子結點,建一棵完整的線段樹只是為了存一下lazy...mex本身是不資磁合併的...
BZOJ 3339 變式 變式
題意 有乙個長度為 n 的陣列a1 a2,an m次詢問,每次詢問乙個區間 l r 內次小沒有出現過的自然數me x2 a l,al 1,a r 資料範圍 n,q 200000 0 ai 200000 且ai z 0r n 分析1 60 做法 莫隊 樹狀陣列 莫隊的轉移。在樹狀陣列上用從前往後的方式...
bzoj2333 離線 線段樹
有n個節點,標號從1到n,這n個節點一開始相互不連通。第i個節點的初始權值為a i 接下來有如下一些操作 u x y 加一條邊,連線第x個節點和第y個節點 a1 x v 將第x個節點的權值增加v a2 x v 將第x個節點所在的連通塊的所有節點的權值都增加v a3 v 將所有節點的權值都增加v f1...
hdu 4288 線段樹 離線處理
hdu 4288 題意 給你類似乙個公升序的set結構 add就是加入乙個數 del就是刪除乙個數 sum就是把所有 5 3的位置的數求和 這題我們怎麼入手呢?以前做過一道類似的樹狀陣列開55個的題 這個題其實大同小異 就是對sum陣列表示 5的值我們開個sum 5 那麼你既然是公升序的 我每次ad...