任務查詢系統(主席樹的差分性質)

2021-09-26 22:36:27 字數 882 閱讀 1461

思路:

由於主席樹運用了字首和思想,每個位置儲存了所有權值的字首和;因此若此題的區間修改利用差分思想,則主席樹的每個位置恰好就維護的是自身位置(差分與字首和相互抵消了),也就是不必手動求字首和了。

這樣我們就只需要離散化一下,然後利用差分思想處理所有的修改

而主席樹部分跟普通主席樹不同的是,主席樹的每個位置並不是維護字首和了(這樣反而使**更簡單了),而是維護的自身位置的權值線段樹(相當於n棵普通的權值線段樹)

#include "bits/stdc++.h"

#define hhh printf("hhh\n")

#define see(x) (cerr<<(#x)<<'='<<(x)inline int read()

const int maxn = 1e5+10;

const int mod = 1e9+7;

const double eps = 1e-7;

int m, n, nn, tot;

int t[maxn<<6], sz[maxn<<6], l[maxn<<6], r[maxn<<6];

int s[maxn], e[maxn], p[maxn], b[maxn];

ll sum[maxn<<6];

vectorq[maxn];

void update(int x, int f, int l, int r, int pre, int &now)

ll qksum(int k, int x, int l, int r)

int main()

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

ll pre=1;

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

}

CQOI2015 任務查詢系統(主席樹 差分)

這是一道好題 可以更深的理解主席樹 最初的想法是 一開始 一邊加入任務 一邊維護時間軸 換句話說 對於每個時間點 我們都想維護一顆權值線段樹 這裡的權值代表著優先順序pi 相當於對於乙個任務 我們要維護ei si棵 然而顯然mle 考慮降維 聯想到主席樹建樹方式是通過字首和來的 既然是求字首和 這道...

BZOJ2588 主席樹 樹上差分

這種類似於第k小的題,一般容易想到主席樹,但是樹鏈並不能不是乙個按順序的序列,使用樹鏈剖分也不太容易維護幾條鏈之間的第k小關係。但是可以從主席樹的字首和思想入手,一般情況的主席樹,查詢的時候是query r query l 1 來詢問區間內的數值數量,在這一題裡面,可以考慮到樹上差分,從樹根開始,以...

CQOI2015 任務查詢系統 主席樹

最近實驗室正在為其管理的超級計算機編制一套任務管理系統,而你被安排完成其中的查詢部分。超級計算機中的任務用三元組 si,ei,pi 描述,si,ei,pi 表示任務從第si秒開始,在第ei秒後結束 第si秒和ei秒任務也在執行 其優先順序為pi。同一時間可能有多個任務同時執行,它們的優先順序可能相同...