Dynamic Rankings 資料結構

2022-08-18 23:03:18 字數 1523 閱讀 4259

給定乙個長度為\(n\)的序列 ,需支援兩種操作:查詢區間\([l,r]\)中第\(k\)小的數;將\(a_\)改為y.

此題需支援動態區間kth查詢,不難想到用主席樹進行維護,然後至於單點修改操作,可以用樹狀陣列維護字首和.

#include#include#include#include#include#include#include#include#include#define r register

#define next kdjadskfj

#define debug puts("mlg")

#define mod 10000000007

#define mod(x) ((x%mod+mod)%mod)

using namespace std;

typedef long long ll;

typedef long double ld;

typedef unsigned long long ull;

inline ll read();

inline void write(ll x);

inline void writeln(ll x);

inline void writesp(ll x);

inline ll lowbit(ll x)

const ll maxn=1e6+5;

struct nodeq[maxn];

ll n,m;

ll a[maxn];

ll lsh[maxn<<1],h;

ll rt[maxn<<1],cnt;

struct segt[maxn<<4];

ll temp[2][maxn],tot[2];

inline void update(ll &p,ll l,ll r,ll k,ll val)

inline void true_update(ll pos,ll val)

inline ll query(ll l,ll r,ll k)

else

}inline ll true_query(ll l,ll r,ll k)

int main()

else

} sort(lsh+1,lsh+h+1);

h=unique(lsh+1,lsh+h+1)-lsh-1;

for(r ll i=1;i<=n;i++) a[i]=lower_bound(lsh+1,lsh+h+1,a[i])-lsh;

for(r ll i=1;i<=n;i++) true_update(i,1);

for(r ll i=1;i<=m;i++)

else }}

inline ll read()while(ch>='0'&&ch<='9')return x*t;}

inline void write(ll x)if(x<=9)write(x/10);putchar(x%10+'0');}

inline void writesp(ll x)

inline void writeln(ll x)

clickhouse insert的資料結構

clickhouse insert大致分為兩部分 1.sql語句部分 insert into table f1,f2 2.資料部分資料部分又分為3部分 頭,資料,尾 資料頭 資料塊1 資料塊2 資料塊n 資料尾從中可以看出 每個insert可以包含多個資料塊,每個資料塊可以包含多行。乙個完整的ins...

資料結鍊錶

1.為什麼需要雙向鍊錶 2.雙向鍊錶刪除節點的3種情況 結論 在雙向鍊錶中插入元素時,使用3個指標變數,實現插入操作 注意 在刪除元素時,通過next null 判斷是否只有乙個業務節點 及判斷是否在鍊錶的0號位置 要特殊處理這兩中情況,避免異常。3.迴圈鍊錶的插入情況 4.迴圈鍊錶的刪除的幾種情況...

Opencv Python API 基本資料結構

本例使用python3.7 opencv環境配置方法 pip install numpy matplotlib 構造2 行 4列 全是0的uchar型別的二維陣列import numpy as np z np.zeros 2 4 np.uint8 type z zarray 0,0,0,0 0,0,...