傳送門biu~
整體二分。我選擇把資料用樹狀陣列維護,樹狀陣列可以支援區間修改區間查詢。
你們可能永遠不會知道一道題沒開long long要調多久qaq
#include
#define lowbit(x) (x&(-x))
using
namespace
std;
#define int long long
struct dataa[50005];
int n,m,tim;
int ans[50005];
int p[50005],tmp[2][50005];
int tree[2][50005],t[2][50005];
inline
void add(int opt,int x,int num)
}inline
void add(int l,int r)
inline
int search(int opt,int x)
return re;
}inline
int search(int x)
void binary_search(int l,int r,int l,int r)
return;
}tmp[0][0]=tmp[1][0]=0;
for(int i=l;i<=r;++i)
}else
else tmp[1][++tmp[1][0]]=x;}}
int rl=l+tmp[0][0];
memcpy(p+l,tmp[0]+1,sizeof(p[0])*tmp[0][0]);
memcpy(p+rl,tmp[1]+1,sizeof(p[0])*tmp[1][0]);
binary_search(l,rl-1,l,mid);
binary_search(rl,r,mid+1,r);
}#undef int
int main()
return
0;}
BZOJ 3110, K大數查詢
傳送門 要求維護乙個數列,支援在某部分的每個位置填上乙個數以及查詢某部分第k大的數字。終於學習了一下樹套樹的姿勢 其實和自己想的也差不多 但是不學還是打不出 來 外層是權值線段樹,內層是區間線段樹。要注意的細節比較多。二分查詢過程中結果可能超過maxlongint,需要用unsigned int型別...
bzoj 3110 K大數查詢 樹套樹
題目傳送門 time limit 20 sec memory limit 512 mb submit 5039 solved 1751 submit status discuss 有n個位置,m個操作。操作有兩種,每次操作如果是1 a b c的形式表示在第a個位置到第b個位置,每個位置加入乙個數c ...
BZOJ 3110 k大數查詢 樹套樹
5e4個可重集合,初試全空,5e4個操作 1.在第 l,r 集合裡加入乙個數c 2.問 l,r 所有集合的並的第k大數 發現很多題解都寫得權值線段樹套區間線段樹啊,我覺得這題反過來套比較直白吧。不過寫了一半陷入了奇怪的思維漩渦裡。就跟著題解寫了個權值套區間線段樹,在luogu上開了o2,加了讀入掛,...