靜態主席樹模板
推薦部落格
http://www.cnblogs.com/zyf0163/p/4749042.html
模板(網上程式碼)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100000 + 5;
int a[N], b[N], rt[N * 20], ls[N * 20], rs[N * 20], sum[N * 20];
int n, k, tot, sz, ql, qr, x, q, T;
void Build(int& o, int l, int r){
o = ++ tot;
sum[o] = 0;
if(l == r) return;
int m = (l + r) >> 1;
Build(ls[o], l, m);
Build(rs[o], m + 1, r);
}
void update(int& o, int l, int r, int last, int p){
o = ++ tot;
ls[o] = ls[last];
rs[o] = rs[last];
sum[o] = sum[last] + 1;
if(l == r) return;
int m = (l + r) >> 1;
if(p <= m) update(ls[o], l, m, ls[last], p);
else update(rs[o], m + 1, r, rs[last], p);
}
int query(int ss, int tt, int l, int r, int k){
if(l == r) return l;
int m = (l + r) >> 1;
int cnt = sum[ls[tt]] - sum[ls[ss]];
if(k <= cnt) return query(ls[ss], ls[tt], l, m, k);
else return query(rs[ss], rs[tt], m + 1, r, k - cnt);
}
void work(){
scanf("%d%d%d", &ql, &qr, &x);
int ans = query(rt[ql - 1], rt[qr], 1, sz, x);
printf("%d\n", b[ans]);
}
int main(){
scanf("%d", &T);
while(T--){
scanf("%d%d", &n, &q);
for(int i = 1; i <= n; i ++) scanf("%d", a + i), b[i] = a[i];
sort(b + 1, b + n + 1);
sz = unique(b + 1, b + n + 1) - (b + 1);
tot = 0;
Build(rt[0],1, sz);
for(int i = 1; i <= n; i ++)a[i] = lower_bound(b + 1, b + sz + 1, a[i]) - b;
for(int i = 1; i <= n; i ++)update(rt[i], 1, sz, rt[i - 1], a[i]);
for(int i = 0; i <= 5 * n; i ++)printf("%d,rt = %d,ls = %d, rs = %d, sum = %d\n", i, rt[i], ls[i], rs[i], sum[i]);
while(q --)work();
}
return 0;
}
相關文章
- 動態主席樹模板
- 主席樹模板
- 【主席樹】P3919 【模板】可持久化線段樹 1持久化
- 主席樹
- freemarker根據靜態模板和動態模板生成PDF與Word
- 洛谷 P3919 可持久化線段樹 1 之主席樹模板(初級)持久化
- HDU2665 Kth number【主席樹】
- HDU4417 Super Mario【主席樹】
- BZOJ4299: Codechef FRBSUM(主席樹)
- D-query SPOJ - DQUERY (主席樹)
- 洛谷 - P3690 【模板】Link Cut Tree (動態樹)(LCT模板)
- 【資料結構】淺談主席樹資料結構
- 基於 Svelte 的通用靜態網站開發模板網站
- 一個後臺靜態模板,自帶excel,print,cvsExcel
- 洛谷P4197 Peaks(Kruskal重構樹 主席樹)
- bzoj3524: [Poi2014]Couriers(主席樹)
- HDU-4348 - To the moon (主席樹+區間修改)
- 【主席數】可持續化線段樹
- SDOI2018 原題識別(主席樹)
- 演算法隨筆——主席樹(可持久化線段樹)演算法持久化
- bzoj3545: [ONTAK2010]Peaks(主席樹+最小生成樹)
- bzoj4477: [Jsoi2015]字串樹(主席樹+Hash+Lca)JS字串
- 靜態域與靜態方法
- 【題解】Solution Set - NOIP2024集訓Day3 權值線段樹、動態開點、主席樹
- SpringBoot2 整合FreeMarker模板,完成頁面靜態化處理Spring Boot
- bzoj3439: Kpm的MC密碼(主席樹+DFS序+字典樹)密碼
- 靜態
- 偽靜態、靜態和動態的區別
- 線段樹模板
- JavaScript 靜態屬性與靜態方法JavaScript
- net 靜態方法與非靜態方法
- bzoj2809: [Apio2012]dispatching(DFS序+主席樹)API
- 求區間不同數的個數【主席樹求解】
- bzoj5178: [Jsoi2011]棒棒糖(主席樹)JS
- bzoj1112: [POI2008]磚塊Klo(主席樹)
- bzoj2588: Spoj 10628. Count on a tree(主席樹+LCA)
- 2024年3月21日 懸繩法 + 珂朵莉樹(ODT) + 主席樹
- doubleselect 靜態