description
帶區間修求區間第kkk大
資料範圍:n≤5
×104
n\leq 5\times 10^4
n≤5×104so
luti
on
solution
soluti
on字首和套主席樹可以解決靜態
樹狀陣列套主席樹可以解決單點修改區間查詢
貌似在這道題,外層套乙個可以區間修改區間查詢的資料結構不就行了嗎?
是的!!!
線段樹套主席樹就可以解決這題,超級樹狀陣列套主席樹也可以解決,本人用的是前者,時間和空間複雜度都是o(n
log2
n×兩棵
線段樹的
常數
)o(nlog^2n\times 兩棵線段樹的常數)
o(nlog
2n×兩
棵線段樹
的常數)
離線演算法的話可以用整體二分做,不過本人不會。
如果對**有看不懂的地方,煩請閱讀關於線段樹操作的一些記錄 cod
e1
code1
code
1,在值上建
#include
#include
#include
#define n 50005
using
namespace std;
int n,op,l,r,k;
inline
intread()
inline
void
write
(int x)
inline
void
print
(int x)
struct position_segment_tree
int mid=l+r>>1;
if(ql<=mid)
add(ls[k]
,l,mid,ql,qr);if
(qr>mid)
add(rs[k]
,mid+
1,r,ql,qr)
;return;}
inline
intask
(int k,
int l,
int r,
int ql,
int qr,
int t=0)
}pst;
struct data_segment_tree
inline
intask
(int k,
int l,
int r,
int ql,
int qr,
int rk)
#undef lson
#undef rson
}dst;
signed
main()
else
}}
c od
ecode
code
以下標建(離散化)
#include
#include
#include
#define n 50005
using
namespace std;
int n,m,op[n]
,l[n]
,r[n]
,k[n]
,b[n]
,totn;
inline
intread()
inline
void
write
(int x)
inline
void
print
(int x)
struct position_segment_tree
int mid=l+r>>1;
if(ql<=mid)
add(ls[k]
,l,mid,ql,qr);if
(qr>mid)
add(rs[k]
,mid+
1,r,ql,qr)
;return;}
inline
intask
(int k,
int l,
int r,
int ql,
int qr,
int t=0)
}pst;
struct data_segment_tree
inline
intask
(int k,
int l,
int r,
int ql,
int qr,
int rk)
#undef lson
#undef rson
}dst;
signed
main()
sort
(b+1
,b+totn+1)
; totn=
unique
(b+1
,b+totn+1)
-b-1
;for
(register
int i=
1;i<=m;i++)if
(op[i]==1
) k[i]
=lower_bound
(b+1
,b+totn+
1,k[i]
)-b;
for(
register
int i=
1;i<=m;
++i)
}
洛谷 P3332 ZJOI2013 K大數查詢
題目 k大數查詢 思路 整體二分。維護兩個區間 l,r 和 l,r 分別代表二分的答案區間,和可以滿足答案的詢問區間。在 l,r 上二分m。對於1操作,如果v小於m,在 q.l,q.r 上用線段樹實現區間加一,值賦1,否則賦0。對於2操作,詢問 q.l,q.r 上的數的個數s,若v小於等於s,值賦1...
洛谷P3332 ZJOI2013 K大數查詢
題目大意 有 n 個位置,m 個操作。操作有兩種 2 l r k 詢問 l,r 中第 k 大的數是多少。題解 樹套樹,權值線段樹套位置線段樹,要標記永久化,不然會 tle 卡點 沒有標記永久化,tle 然後處理 tag 部分寫錯 c code include include include name...
P3332 ZJOI2013 K大數查詢
有n個位置,m個操作。操作有兩種,每次操作如果是1 a b c的形式表示在第a個位置到第b個位置,每個位置加入乙個數c如果是2 a b c形式,表示詢問從第a個位置到第b個位置,第c大的數是多少。輸入格式 第一行n,m接下來m行,每行形如1 a b c或2 a b c 輸出格式 輸出每個詢問的結果 ...