有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...