BZOJ3578 GTY的人類基因組計畫2

2021-09-06 15:37:49 字數 983 閱讀 5405

關於如何判斷乙個集合是否出現過:

給每個元素隨機乙個hash權值,然後xor起來即可

插入刪除都只需xor

線段樹維護區間有效人數和,以及打標記表示這個區間的集合要全部標記為出現過,並把區間內sum值都置0

寫hash用了map**了tat

#include#include#define n 100010

#define m 200010

inline void read(int&a)

int n,m,q,i,j,loc[n];

int tot,l[m],r[m],val[m],sum[m],ran,set[m],hash[n];bool tag[m];

std::mapvis;

char ch;

int build(int a,int b)

inline void clean(int x,int a,int b)

inline void pb(int x,int a,int b)

}inline void up(int x)

void add(int x,int a,int b,int c,int p,int w)

int mid=(a+b)>>1;

pb(x,a,b);

if(c<=mid)add(l[x],a,mid,c,p,w);else add(r[x],mid+1,b,c,p,w);

up(x);

}int ask(int x,int a,int b,int c,int d)

int mid=(a+b)>>1;

pb(x,a,b);

if(c<=mid)t+=ask(l[x],a,mid,c,d);

if(d>mid)t+=ask(r[x],mid+1,b,c,d);

up(x);

return t;

}int main()

return 0;

}

bzoj3578 GTY的人類基因組計畫2

description gty召喚了n個人來做實驗,gty家的房子很大,有m個房間一開始所有人都在1號房間裡,gty會命令某人去某個房間等待做實驗,或者命令一段區間的房間開始實驗,實驗會獲得一些實驗資訊點數,點數為房間裡的人數,如果乙個房間裡的一群人已經做過實驗了那麼這些人將不會增加實驗資訊點數 不...

bzoj3720 Gty的妹子樹

我們可以樹上分塊,詳見我部落格中雜文下的根號演算法題庫 然後每個塊維護降序,對於整一塊在子樹內的就可以二分,其餘部分暴力。include include include include define fo i,a,b for i a i b i using namespace std const i...

bzoj3744 Gty的妹子序列

time limit 20 sec memory limit 128 mb submit 967 solved 293 submit status discuss 我早已習慣你不在身邊,人間四月天 寂寞斷了弦。回望身後藍天,跟再見說再見 某天,蒟蒻autumn發現了從 gty的妹子樹 bzoj372...