題意:懶得說了自己看吧: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。同一時間可能有多個任務同時執行,它們的優先順序可能相同...