洛谷 P3168 CQOI2015 任務查詢系統

2022-08-12 10:57:15 字數 2221 閱讀 4776

咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕

kono題面噠!

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

超級計算機中的任務用三元組 \((s_i,e_i,p_i)\)描述,\((s_i,e_i,p_i)\)表示任務從第 \(s_i\) 秒開始,在第 \(e_i\)秒後結束(第 \(s_i\) 秒和 \(e_i\)秒任務也在執行),其優先順序為 \(p_i\)。同一時間可能有多個任務同時執行,它們的優先順序可能相同,也可能不同。

排程系統會經常向查詢系統詢問,第 \(x_i\) 秒正在執行的任務中,優先順序最小的 \(k_i\) 個任務(即將任務按照優先順序從小到大排序後取前 \(k_i\) 個)的優先順序之和是多少。

特別的,如果 \(k_i\) 大於第$ x_i$秒正在執行的任務總數,則直接回答第 \(x_i\) 秒正在執行的任務優先順序之和。上述所有引數均為整數,時間的範圍在\([1,n]\) 之間。

查詢的引數 \(k_i\) 需要由公式$ k_i = 1 +(a_i \times \text+b_i) \bmod c_i$ 計算得到。

其中$pre $表示上一次查詢的結果,定義初始 \(pre=1\) 。

資料範圍:\(1\leq m,n,s_i,e_i,c_i,a_i,b_i\leq10^5,1\leq p_i\leq10^7,x_i\)為\(1\)到\(n\)的排列。

樣例輸入:

4 3

1 2 6

2 3 3

1 3 2

3 3 4

3 1 3 2

1 1 3 4

2 2 4 3

樣例輸出:

解法:莫隊主席樹維護乙個差分序列。講完了(逃

本人因為懶使用了vector來把每個時間點的操作存下來,如果覺得慢的話可以嘗試一下鍊錶之類的寫法。

一定要注意\(long long\),不能多開也不能少開。

kono**噠!

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

typedef long long ll;

char *p1,*p2,buf[1<<20];

#define gc (p1==p2&&(p1=buf,p2=buf+fread(buf,1,1<<20,stdin),p1==p2)?0:(*(p1++)))

//#define gc getchar()

inline ll in()

while(isdigit(ch))

return w?-x:x;

}struct node ;

const int maxn=100010;

vectort[maxn];

ll b[maxn],bs;

int root[maxn];

struct tree

int ins(int p,int l,int r,ll k,ll val)

int mid=((l+r)>>1);

if(mid>=k)sum[rt].ls=ins(sum[p].ls,l,mid,k,val);

else sum[rt].rs=ins(sum[p].rs,mid+1,r,k,val);

return rt;

} ll get_k(ll p,int l,int r,int k)

} tr;

int n,m;

ll last=1;

ll _max=0;

int main()

sort(b+1,b+bs+1);

bs=unique(b+1,b+bs+1)-b-1;

_max=bs;

tr.build(root[0],1,_max);

for(i=1; i<=m; i++)

} for(i=1; i<=m; i++)

else last=tr.get_k(root[x],1,_max,k);

// last=tr.get_k(root[x],1,_max,k);

printf("%lld\n",last);

} return 0;

}

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...