k-th number
求區間內第k小的數。主席樹的板子題
主席樹左子樹存小值,右邊大值,用sum記錄一下子樹節點個數。對(l,r)的查詢區間,root【r】 - root【l- 1】可得出(l,r)的差值,也就是大小的個數
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long
#define ull unsigned long long
#define mod 10007
#define inf 0x7ffffff
#define mem(a,b) memset(a,b,sizeof(a))
#define modd(a,b) (((a%b)+b)%b)
#define lson rt << 1
#define rson rt << 1 | 1
using namespace std;
const int maxn = 2e5 + 5;
int a[maxn];
int root[maxn];
int cnt = 0;
struct node
hjt[maxn*40];
vectorv;
int getid(int x)
void update(int l,int r,int pre,int &now,int p)
int query(int l,int r,int l,int r,int k)
int main()
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());
for(int i = 1; i <= n; i++)
while(m--)
v.clear();
mem(a,0),mem(root,0);
}return 0;
}
主席樹 區間第k小
主席樹 權值線段樹 可持久化 權值線段樹 在此處指各個數字在某個區間內出現的次數 那麼第一棵權值線段樹會記錄 1,1 的數字出現次數 第n棵權值線段樹會記錄 1,n 的數字出現次數 例 數列為110001 第一棵權值線段樹記錄為tree1 0 0 tree1 1 1 第二棵權值線段樹記錄為tree2...
主席樹 靜態區間第k小
這是個非常經典的主席樹入門題 靜態區間第k小 資料已經過加強,請使用主席樹。同時請注意常數優化 如題,給定n個整數構成的序列,將對於指定的閉區間查詢其區間內的第k小值。輸入格式 第一行包含兩個正整數n m,分別表示序列的長度和查詢的個數。第二行包含n個整數,表示這個序列各項的數字。接下來m行每行包含...
主席樹 動態區間第k小
模板題在這裡洛谷2617。閱讀本文需要有主席樹的基礎,也就是通過區間kth的模板題。靜態整體kth sort一下找第k小,時間複雜度 o nlogn 動態整體kth 權值線段樹維護一下,時間複雜度 o nlogn 靜態區間kth 主席樹維護,時間複雜度 o nlogn 動態區間kth 就是本次的標題...