BZOJ3932 任務查詢系統

2021-07-03 13:24:21 字數 1513 閱讀 1841

題意:懶得說了自己看吧:ac通道

題解:哎隨便扯兩句吧,一看就知道是主席樹。先離散化,然後對於每個任務,在其左端點插入,右端點刪除,每個詢問只需稍微處理一下就可以了

#include 

using

namespace

std;

typedef

long

long ll;

typedef

double db;

const

int inf=0x3f3f3f3f;

int getint()

while(c>='0' && c<='9')g=(g<<3)+(g<<1)+c-'0',c=getchar();

return f*g;

}int sgn(int x)

const

int maxn=200005;

const

int maxm=maxn*50;

struct node

node(int v,int p):v(v),p(p){}

bool

operator

< (const node &no)const

;treenode t[maxm];

int n,m;

node t[maxn];

int cnt;

int pos[maxn];

int root[maxn];

#define mid (l+r>>1)

#define lc t[x].lson

#define rc t[x].rson

int tot=1;

void build(int x,int l,int r)

void modify(int x,int last,int l,int r,int p,int v)

else

t[x].v=t[lc].v+t[rc].v;t[x].sum=t[lc].sum+t[rc].sum;

}ll getans(int x,int l,int r,int k)

ll d[maxn];

ll ans=1;

ll res;

vector

g[maxn];

int main()

//puts("readin ok");

sort(t+1,t+m+1);

d[t[1].p]=++cnt;

for(int i=2;i<=m;i++)

d[t[i].p]=cnt;

}for(int i=1;i<=m;i++)

root[0]=1;

build(root[0],1,cnt);

for(int i=1;i<=n;i++)

pos[i]=res;

}//puts("pre ok");

int x,a,b,c;

for(int i=1;i<=n;i++)

else

}return

0;}

bzoj 3932 任務查詢系統

傳送門 每個任務 si,ei,pi 在si的位置加入pi,在ei 1的位置刪掉pi,這樣取字首和就能表示每個點包含的所有數。將每個任務拆成兩個操作 在si加pi和在ei減pi。將所有操作排序後按操作建主席樹。然後還需要求個to陣列,存詢問中的每個時間點要在哪棵樹中查詢。可能會有重複的數,所以在查詢到...

BZOJ3932 CQOI2015 任務查詢系統

最近實驗室正在為其管理的超級計算機編制一套任務管理系統,而你被安排完成其中的查詢部分。超級計算機中的 任務用三元組 si,ei,pi 描述,si,ei,pi 表示任務從第si秒開始,在第ei秒後結束 第si秒和ei秒任務也在執行 其優先順序為pi。同一時間可能有多個任務同時執行,它們的優先順序可能相...

bzoj3932 CQOI2015 任務查詢系統

最近實驗室正在為其管理的超級計算機編制一套任務管理系統,而你被安排完成其中的查詢部分。超級計算機中的任務用三元組 si,ei,pi 描述,si,ei,pi 表示任務從第si秒開始,在第ei秒後結束 第si秒和ei秒任務也在執行 其優先順序為pi。同一時間可能有多個任務同時執行,它們的優先順序可能相同...