CF91B Queue 權值線段樹

2022-06-07 03:48:11 字數 452 閱讀 7435

有n個人在佇列中等待。假如某個人前面有乙個人年齡比他小,那他就會不高興;定義他的「不高興度」為他前面留他最遠的年齡比他小的人與他的距離,求每個人的不高興度。 n<=10^5

權值線段樹

#include using namespace std;

const int inf = 1e+9+7;

const int n = 4000005;

int n,a[n],b[n],ch[n][2],ind=1,ans[n];

void modify(int p,int l,int r,int pos,int key)

else

}int query(int p,int l,int r,int ql,int qr)

int main()

for(int i=1;i<=n;i++)

}

CF91B Queue(單調佇列 二分)

這題比較經典,我們想要求比他小的最遠的點 因此我們發現,如果乙個點比他前面的點大還比他近,說明這個點永遠不會作為答案 因此我們就可以維護乙個單調佇列,之後二分找到第乙個大於等於他的位置在哪,之後這個位置的前乙個就是答案 includeusing namespace std typedef long ...

權值線段樹

維護全域性的值域資訊,每個節點記錄的是該值域的值出現的總次數。使用二分的思想 離散化的時候,需要用到 支援查詢全域性k小值,全域性rank,前驅,後繼等。單詞操作時間複雜度為o logn 空間複雜度為o n 相對於平衡樹的優勢 簡單,速度快 劣勢 值域較大時,我們需要離散化,變成離線資料結構 我認為...

權值線段樹

include using namespace std int n,m,tre 10003 4 laz 10003 4 void pushdown int num void update int num,int le,int ri,int x,int y,int z pushdown num int...