思路:
由於主席樹運用了字首和思想,每個位置儲存了所有權值的字首和;因此若此題的區間修改利用差分思想,則主席樹的每個位置恰好就維護的是自身位置(差分與字首和相互抵消了),也就是不必手動求字首和了。
這樣我們就只需要離散化一下,然後利用差分思想處理所有的修改
而主席樹部分跟普通主席樹不同的是,主席樹的每個位置並不是維護字首和了(這樣反而使**更簡單了),而是維護的自身位置的權值線段樹(相當於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。同一時間可能有多個任務同時執行,它們的優先順序可能相同...