因為對於任務來說,對一段區間是有用的,於是我們可以用差分來表示區間,然後主席樹維護字首區間和即可。
然後因為我們是求和,我們同時主席樹也要維護區間的數字個數,因為求k小和。
但是有可能當前區間的有a個相同的數字,我們求b個和,然後bac**:
#pragma gcc optimize(2)
#include
#define int long long
using namespace std;
const
int n=
2e5+10;
int m,n,s[n]
,e[n]
,p[n]
,rt[n]
,cnt,len,pre=1;
vector<
int> v,g[n]
;struct nodet[n*40]
;void
change
(int l,
int r,
int&x,
int y,
int pos,
int k,
int flag)
intask
(int l,
int r,
int x,
int k)
signed
main()
sort
(v.begin()
,v.end()
); v.
erase
(unique
(v.begin()
,v.end()
),v.
end())
;for
(int i=
1;i<=m;i++
) p[i]
=lower_bound
(v.begin()
,v.end()
,p[i]
)-v.
begin()
+1; len=v.
size()
;for
(int i=
1;i<=n;i++)}
while
(n--
)return0;
}
CQOI2015 任務查詢系統
主席樹維護k大,考慮到利用主席樹字首和的性質。把每個任務拆分成權值為1的進入操作,和權值為 1的退出操作 注意因為是閉區間,所以右邊的位置加進去的時候需要 1 應該是個動態開點的權值線段樹一樣的東西吧 維護v,表示該節點維護的任務數量是多少。sum表示該節點維護的任務總和是多少。輸出k大的時候 因為...
CQOI 2015 任務查詢系統
給定 m 個任務 l,r,p 其中 l,r 代表這個任務將於時間 l,r 內進行,而 p 代表的是這個任務的優先順序 有 n 個詢問 x,k 每次詢問在時間點 x 進行的所有任務按優先順序從小到大排序,前 k 個任務的優先順序之和 求前 k 個數的和,我們想到主席樹 區間覆蓋問題,我們想到差分 眾所...
CQOI2015 任務查詢系統
time limit 20 sec memory limit 512 mb submit 3352 solved 1072 submit status discuss 最近實驗室正在為其管理的超級計算機編制一套任務管理系統,而你被安排完成其中的查詢部分。超級計算機中的 任務用三元組 si,ei,pi...