最近實驗室正在為其管理的超級計算機編制一套任務管理系統,而你被安排完成其中的查詢部分。超級計算機中的任務用三元組(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行,每行乙個整數,表示查詢結果。
在教師聽著課,寫了一上午沒有過,回到宿舍聽著歌,就a了。神奇
#includeusing namespace std;
#define ll long long
const int m=210000;
struct nodet[m*40];//主席樹
struct noded[m];
int n,m,b[m],cnt,rot[m];
vectorg[m];
void build(int &k,int l,int r)
void update(int pre,int &k,int l,int r,int in,int type)
ll ask(int k,int num,int l,int r)
int main()
build(rot[0],1,b[0]);
for(int i=1;i<=n;i++)
update(rot[i-1],rot[i],1,b[0],abs(g[i][0]),g[i][0]<0?-1:1);
for(int j=1;j}
ll pre=1,a,b1,c,x,k;
for(int i=1;i<=n;i++)
return 0;
}
洛谷3834 可持久化線段樹(主席樹模板)
主席樹經典問題,靜態查詢區間第k大數。拖了很久都沒有寫的模板。結果差不多此次 你賽都考,痛定思痛後,決定好好研究下。主席樹可以近似理解為權值線段樹的字首和的形式,詳細講解可參考wcr寫的主席樹講解 傳送門。回到該題,因為不涉及修改操作,所以我們建立n棵權值線段樹,先將資料離散化,這樣主席樹的權值就在...
洛谷3834 可持久化線段樹(主席樹模板)
主席樹經典問題,靜態查詢區間第k大數。拖了很久都沒有寫的模板。結果差不多此次 你賽都考,痛定思痛後,決定好好研究下。主席樹可以近似理解為權值線段樹的字首和的形式,詳細講解可參考wcr寫的主席樹講解 傳送門。回到該題,因為不涉及修改操作,所以我們建立n棵權值線段樹,先將資料離散化,這樣主席樹的權值就在...
洛谷 任務安排
初見安 這裡是傳送門 洛谷p2365 n個任務排成乙個序列在一台機器上等待完成 順序不得改變 這n個任務被分成若干批,每批包含相鄰的若干任務。從時刻0開始,這些任務被分批加工,第i個任務單獨完成所需的時間是ti。在每批任務開始前,機器需要啟動時間s,而完成這批任務所需的時間是各個任務需要時間的總和 ...