洛谷P1486 鬱悶的出納員

2022-05-20 13:18:35 字數 768 閱讀 9821

題目大意:維護乙個平衡樹,支援插入乙個數,刪除小於乙個值的所有數,k 大值查詢,每個節點權值加減乙個數。

題解:所有節點權值加減操作可以考慮直接維護乙個全域性標記,刪除小於乙個值的所有數字為乙個二分的過程,複雜度為 \(o(logn)\),具體做法為:若當前子樹根節點權值小於 x,則直接刪除整顆左子樹,繼續遍歷,否則訪問左子樹。

**如下

#include using namespace std;

const int maxn=1e5+10;

inline int read()while(!isdigit(ch));

dowhile(isdigit(ch));

return f*x;

}int n,mi,tag,ans;

struct nodet[maxn];

int tot,root;

inline int newnode(int val)

inline void pushup(int o)

inline void zig(int &o)

inline void zag(int &o)

void insert(int &o,int val)else

}void remove(int &o,int val)

pushup(o);

}int kth(int o,int k)

void solve()

} printf("%d\n",ans);

}int main()

洛谷P1486 鬱悶的出納員 Treap

oier公司是一家大型專業化軟體公司,有著數以萬計的員工。作為一名出納員,我的任務之一便是統計每位員工的工資。這本來是乙份不錯的工作,但是令人鬱悶的是,我們的老闆反覆無常,經常調整員工的工資。如果他心情好,就可能把每位員工的工資加上乙個相同的量。反之,如果心情不好,就可能把他們的工資扣除乙個相同的量...

NOI2004, 洛谷P1486 鬱悶的出納員

題目描述 oier公司是一家大型專業化軟體公司,有著數以萬計的員工。作為一名出納員,我的任務之一便是統計每位員工的工資。這本來是乙份不錯的工作,但是令人鬱悶的是,我們的老闆反覆無常,經常調整員工的工資。如果他心情好,就可能把每位員工的工資加上乙個相同的量。反之,如果心情不好,就可能把他們的工資扣除乙...

洛谷 1486 鬱悶的出納員 Treap

題意概述 要求維護乙個序列支援以下操作 1,插入元素x 2,把序列的所有元素加上x 3,把序列的所有元素減去x,同時低於乙個給定的下限的元素馬上被刪除 4,詢問序列中第k大的元素。題解 treap 用乙個delta記錄元素的增減情況,即實際上的元素的值應該是qval root,x delta,那麼插...