對資料結構的不熟練題目鏈結
嘗試一下樹狀陣列套主席樹的寫法。
小細節沒有重視:為了方便起見,一般我們寫getrank(x)求的都是
1 #include2const
int maxn = 50035;3
const
int maxnode = 5000035;4
const
int inf = 2147483647;5
6struct
node
7f[maxnode];
10struct
qrs11
qr[maxn];
14int n,m,rt[maxn],v[maxn],tot,cnt[maxn<<1
];15
intcntl,cntr,l[maxn],r[maxn];
1617
intread()
1827
void update(int &rt, int l, int r, int c, int
d)28
36int rank(int l, int r, int
c)3748}
49for (int i=l-1; i; i-=i&-i)
5058}59
return
ret;60}
61int ask(int l, int r, int
k)62
else76}
77void getrank(int l, int r, int
k)78
83int
main()
8494 cnt[++cnt[0]] = inf, cnt[++cnt[0]] = -inf;
95 std::sort(cnt+1, cnt+cnt[0]+1
);96 cnt[0] = std::unique(cnt+1, cnt+cnt[0]+1)-cnt-1;97
for (int i=1; i<=n; i++)
98103
for (int opt, i=1; i<=m; i++)
104111
if (opt==3
)118
if (opt==4
)123
if (opt==5
)128
}129
return0;
130 }
題目鏈結
樹套樹維護區間逆序對個數;每一次修改只需要處理一下修改前後對答案的正負貢獻。
1 #include2const
int maxn = 20035;3
const
int maxnode = 7000035;4
5struct
node
6f[maxnode];
9int
n,m,h[maxn],cnt[maxn];
10int
tot,rt[maxn],cntl,cntr,svl[maxn],svr[maxn];
11long
long
ans,tmp;
1213
intread()
1423
void update(int &rt, int l, int r, int c, int
d)24
32void query(int rt, int l, int r, int l, int
r)33
39int mid = (l+r)>>1;40
if (l <=mid) query(f[rt].l, l, r, l, mid);
41if (r > mid) query(f[rt].r, l, r, mid+1
, r);42}
43long
long fndquery(int lp, int rp, int l, int
r)44
53void backtrack(int l, int r, int l, int r, int
f)54
58int
main()
5969 m =read();
70for (int i=1; i<=n; i++)
71 backtrack(1, i-1, h[i]+1, cnt[0], 1
);72 printf("
%lld\n
",ans);
73for (int i=1; i<=m; i++)
7494
return0;
95 }
模板 樹套樹
xsy2685 lg3380 bzoj3196 tyvj1730 二逼平衡樹 1.查詢k在區間內的排名 乙個數的排名是小於這個數的個數 1 2.查詢區間內排名為 k 的值 3.修改某一位值上的數值 4.查詢 k 在區間內的前驅 前驅定義為小於 x 且最大的數 5.查詢 k 在區間內的後繼 後繼定義為...
樹套樹 線段樹套set
請你寫出一種資料結構,來維護乙個長度為 n 的序列,其中需要提供以下操作 1 pos x,將 pos 位置的數修改為 x。2 l r x,查詢整數 x 在區間 l,r 內的前驅 前驅定義為小於 x,且最大的數 數列中的位置從左到右依次標號為 1 n。區間 l,r 表示從位置 l 到位置 r 之間 包...
初學樹套樹 線段樹套Treap
樹套樹是乙個十分神奇的演算法,種類也有很多 像什麼樹狀陣列套主席樹 樹狀陣列套值域線段樹 zkw 線段樹套 vector 等等。不過,像我這麼弱,當然只會最經典的線段樹套 treap 啦。線段樹我相信大家都會的,treap 可以看一下這篇部落格 簡析平衡樹 二 treap 線段樹套 treap 的思...