BZOJ3932 CQOI2015 任務查詢系統

2021-08-04 17:46:13 字數 2068 閱讀 2395

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

任務用三元組(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 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

2 8

11k1 = (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的乙個排列

bzoj3932

洛谷p3168

#include 

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int maxn = 0x3f3f3f3f;

const

int n = 2e5 + 5, m = 5e6 + 5;

ll ans = 1; int n, m, l, e, fx, rt[n << 1], spj[n];

struct edge

a[n << 1], *t = a, *lst[n];

struct point

tr[m];

//根據題意 1 <= pi <= 10000000

//按照權值線段樹的定義空間顯然是不夠的

//但考慮一共只有2m次插入,每次只增加log2m個節點

//所以我們這麼開是沒有問題的

template

inline

void ckmax(t &a, const t &b)

inline

int get()

inline

void put(ll x)

inline

void addedge(const

int &x, const

int &y)

inline

int abs(const

int &x)

inline

void insert(const

int &y, int &x, const

int &vi, const

int &l, const

int &r)

inline ll query(const

int &x, const

int &l, const

int &r, const

int &k)

int main()

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

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

return

0;}

bzoj3932 CQOI2015 任務查詢系統

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

3932 CQOI2015 任務查詢系統

time limit 20 sec memory limit 512 mb submit 1191 solved 437 submit status discuss 最近實驗室正在為其管理的超級計算機編制一套任務管理系統,而你被安排完成其中的查詢部分。超級計算機中的任務用三元組 si,ei,pi 描...

BZOJ3932 任務查詢系統

題意 懶得說了自己看吧 ac通道 題解 哎隨便扯兩句吧,一看就知道是主席樹。先離散化,然後對於每個任務,在其左端點插入,右端點刪除,每個詢問只需稍微處理一下就可以了 include using namespace std typedef long long ll typedef double db ...