傳送門
求前 $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...