P3168 CQOI2015 任務查詢系統

2022-05-19 11:43:18 字數 1276 閱讀 6152

傳送門

求前 $k$ 小的數的和,考慮主席樹

但是如果每個時間都暴力插入顯然會gg

發現每個任務都是區間,查詢是單點查詢

所以考慮維護差分陣列

直接用主席樹維護差分陣列,因為同一時間差分可能有多次修改,所以要把當前修改全部搞完才算當前時間的線段樹

詢問就在相應時間點的線段樹上走

具體看**理解吧

#include#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;inline ll read()

while(ch>='

0'&&ch<='

9')

return x*f;

}const

int n=2e5+7,m=2e7+7

;int

n,m;

intrt[n],l[m],r[m],sz[m],cnt;

ll s[m];

//注意long long!

intval,k;

ll res;

//long long !

void ins(int &o,int l,int r,int pre)//

插入void query(int o,int l,int

r)

int mid=l+r>>1

;

if(sz[l[o]]1

,r); }

//注意當前的位置是[1,pos]為閉區間所以是sz[l[o]] '<' k不是 '<=',(upd:好像也可以,但是最好還是注意一下變數的意義qwq)

else

query(l[o],l,mid);

}int

p[n],tot;

vector

v[n];//

維護乙個時間點的差分操作

intmain()

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

int x; ll las=1;//

初始las=1,long long !

while(m--)

//特判 res=0; query(x,1,mx); printf("

%lld\n

",res); las=res;//

輸出要long long!

}}

P3168 CQOI2015 任務查詢系統

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

P3168 CQOI2015 任務查詢系統

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

P3168 CQOI2015 任務查詢系統

p3168 cqoi2015 任務查詢系統 傳送門 給你 m 條資訊,即乙個優先順序為 p i 的任務,處理時間為 l i r i 給你 n 條詢問,每條詢問 在 x 時刻優先順序前 k 小的任務 p 的總和為多少。1 n,m 10 5,1 p i 10 7 n,m 這樣的範圍,大概是 o nlog...