BZOJ3110 Zjoi2013 K大數查詢

2022-08-12 23:48:22 字數 572 閱讀 3322

喜聞樂見的簡單樹套樹= =第一維按權值建樹狀陣列,第二維按下標建動態開點線段樹,修改相當於第二維區間加,查詢在樹狀陣列上二分,比一般的線段樹還短= =可惜並不能跑過整體二分= =另外bzoj上的資料有負數= =其他樹套樹方法也是可以的愛怎麼套怎麼套= =

#include#define j (i+j>>1)

#define i (j+1)

typedef unsigned ll;

const int n=1e5+5;

ll n,m,q,i,j,k,s,t,u,v;

struct nodee[n*320];

node*a=e,*r[n];

void vary(node*&o,int s,int t,int i=1,int j=n)

}void ask(node*o,int s,int t,int i=1,int j=n) }}

int main()

printf("%d\n",n-j);

}else

for(i=n-k+1;i<=m;i+=i&-i)

vary(r[i],s,t);

}}

BZOJ 3110 Zjoi2013 K大數查詢

title bzoj 3110 zjoi2013 k大數查詢 categories bzoj date 2016 2 3 00 00 00 tags 樹套樹,整體二分 有n個位置,m個操作。操作有兩種,每次操作如果是1 a b c的形式表示在第a個位置到第b個位置,每個位置加入乙個數c 如果是2 a...

BZOJ 3110 Zjoi2013 K大數查詢

title bzoj 3110 zjoi2013 k大數查詢 categories bzoj date 2016 2 3 00 00 00 tags 樹套樹,整體二分 有n個位置,m個操作。操作有兩種,每次操作如果是1 a b c的形式表示在第a個位置到第b個位置,每個位置加入乙個數c 如果是2 a...

BZOJ3110 Zjoi2013 K大數查詢

整體二分 樹狀陣列 這道題和某題類似 整體二分,每次二分乙個值,因為是求第k大,比二分值大的在 l r 區間 1,詢問就問這個區間的數,如果數量大於k,說明實際答案大於二分值,下放右區間,否則下放左區間,k減去詢問的值 因為後面不會再考慮mid r的值 把區間加操作也按照權值兩邊下放,每次詢問完答案...