3932 CQOI2015 任務查詢系統

2021-07-10 22:44:10 字數 2200 閱讀 6217

time limit: 20 sec  

memory limit: 512 mb

submit: 1191  

solved: 437 [

submit][

status][

discuss]

最近實驗室正在為其管理的超級計算機編制一套任務管理系統,而你被安排完成其中的查詢部分。

超級計算機中的任務用三元組(si,ei,pi)描述,(si,ei,pi)表示任務從第si秒開始,在第ei秒後結束(第si秒和ei秒任務也在執行),其優先順序為pi。同一時間可能有多個任務同時執行,它們的優先順序可能相同,也可能不同。排程系統會經常向查詢系統詢問,第xi秒正在執行的任務中,優先順序最小的ki個任務(即將任務按照優先順序從小到大排序後取前ki個)的優先順序之和是多少。特別的,如果ki大於第xi秒正在執行的任務總數,則直接回答第xi秒正在執行的任務優先順序之和。上述所有引數均為整數,時間的範圍在1到n之間(包含1和n)。

輸入檔案第一行包含兩個空格分開的正整數m和n,分別表示任務總數和時間範圍。

接下來m行,每行包含三個空格分開的正整數si、ei和pi(si≤ei),描述乙個任務。 

接下來n行,每行包含四個空格分開的整數xi、ai、bi和ci,描述一次查詢。查詢的引數ki需要由公式 ki=1+(ai*pre+bi) mod ci

計算得到。其中pre表示上一次查詢的結果,對於第一次查詢,pre=1。

輸出共n行,每行乙個整數,表示查詢結果。

4 31 2 6

2 3 3

1 3 2

3 3 4

3 1 3 2

1 1 3 4

2 2 4 328

11樣例解釋

k1 = (1*1+3)%2+1 = 1

k2 = (1*2+3)%4+1 = 2

k3 = (2*8+4)%3+1 = 3

對於100%的資料,1≤m,n,si,ei,ci≤100000,0≤ai,bi≤100000,1≤pi≤10000000,xi為1到n的乙個排列

[ submit][

status][

discuss]

用主席樹解決

對時間建立主席樹,每個節點儲存當前值域含有的值的總數以及他們的和

這樣每個任務就拆為si、ei兩處的乙個+操作和乙個-操作

然後查詢

空間開小:運算元*2所以空間應該2*nlogn...

查詢出錯:每個時間可能有多個重複優先順序任務,所以查詢需要特判這一點,否則出差錯

#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int maxn = 2e5 + 10;

struct datac[maxn*20];

ll num[maxn];

int n,m,cnt,cur = 1,lc[maxn*20],rc[maxn*20],root[maxn];

vector v[maxn];

ll getll()

int abs(int x)

int insert(int o,int l,int r,int po)

ll query(int o,int l,int r,int k)

int main()

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

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

if (num[i] != num[i-1])

num[++cur] = num[i];

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

for (int j = 0; j < v[i].size(); j++)

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

} else root[i] = root[i-1]; }

ll pre = 1;

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

return 0;

}

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。同一時間可能有多個任務同時執行,它們的優先順序可能相同...

CQOI2015 任務查詢系統

因為對於任務來說,對一段區間是有用的,於是我們可以用差分來表示區間,然後主席樹維護字首區間和即可。然後因為我們是求和,我們同時主席樹也要維護區間的數字個數,因為求k小和。但是有可能當前區間的有a個相同的數字,我們求b個和,然後bac pragma gcc optimize 2 include def...