傳送門
板子,大佬的題解寫的真好
ps:看了看attack大佬的板子……跑的飛快……
然後抄了抄……慢的要命(評測機玄學問題?)
真不知道大佬常數怎麼寫的……
更神仙的是大佬居然都不先建樹直接加點→_→
怎麼過的orz
1//luogu-judger-enable-o22//
minamoto
3 #include4
#define n 200005
5using
namespace
std;
6#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<15,stdin),p1==p2)?eof:*p1++)
7char buf[1
<<15],*p1=buf,*p2=buf;
8 inline int
read()
18int sum[n<<5],l[n<<5],r[n<<5
];19
inta[n],b[n],t[n];
20int n,q,m,cnt=0;21
int build(int l,int
r)29
return
rt;30}31
int update(int last,int l,int r,int
x)39
return
rt;40}41
int query(int u,int v,int l,int r,int
k)48
intmain()
60while(q--)
66return0;
67 }
然後是照著attack大佬的板子寫的
算了以後用這個板子
1//luogu-judger-enable-o22//
luogu-judger-enable-o23//
minamoto
4 #include5
#define n 200005
6using
namespace
std;
7#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?eof:*p1++)
8char buf[1
<<21],*p1=buf,*p2=buf;
9 inline int
read()
19char obuf[1
<<24],*o=obuf;
20void print(int
x)24
int sum[n<<5],l[n<<5],r[n<<5
];25
inta[n],b[n],t[n];
26int n,q,m,cnt=0;27
void update(int last,int &now,int l,int r,int
x)35
int query(int u,int v,int l,int r,int
k)42
intmain()
53while(q--)
60 fwrite(obuf,o-obuf,1
,stdout);
61return0;
62 }
P3834 模板 可持久化線段樹 1(主席樹)
主席樹 菜雞看了乙個晚上的時間才懂。感覺網上的部落格大都大亂。我也是找到了幾遍好一點的看了一下。參考部落格 參考部落格 首先,會主席樹的前提是會線段樹。還有,我們一般在用線段樹的時候,下標位置大都是採用了i 2 和i 2 1來作為i號的左右孩子。但是,在主席樹中,我們不可以把這種思想帶過來。因為主席...
P3834 模板 可持久化線段樹 1(主席樹)
這是個非常經典的主席樹入門題 靜態區間第k小 資料已經過加強,請使用主席樹。同時請注意常數優化 如題,給定n個整數構成的序列,將對於指定的閉區間查詢其區間內的第k小值。第一行包含兩個正整數n m,分別表示序列的長度和查詢的個數。第二行包含n個整數,表示這個序列各項的數字。接下來m行每行包含三個整數l...
P3834 模板 可持久化線段樹 1(主席樹)
這是個非常經典的主席樹入門題 靜態區間第k小 資料已經過加強,請使用主席樹。同時請注意常數優化 如題,給定n個正整數構成的序列,將對於指定的閉區間查詢其區間內的第k小值。輸入格式 第一行包含兩個正整數n m,分別表示序列的長度和查詢的個數。第二行包含n個正整數,表示這個序列各項的數字。接下來m行每行...