P1083 借教室 差分陣列

2022-05-01 15:51:10 字數 1015 閱讀 3406

第一行包含兩個正整數n,mn,m,表示天數和訂單的數量。

第二行包含nn個正整數,其中第ii個數為r_iri​,表示第ii天可用於租借的教室數量。

接下來有mm行,每行包含三個正整數d_j,s_j,t_jdj​,sj​,tj​,表示租借的數量,租借開始、結束分別在第幾天。

每行相鄰的兩個數之間均用乙個空格隔開。天數與訂單均用從11開始的整數編號。

輸出格式:

如果所有訂單均可滿足,則輸出只有一行,包含乙個整數00。否則(訂單無法完全滿足)

輸出兩行,第一行輸出乙個負整數-1−1,第二行輸出需要修改訂單的申請人編號。

輸入樣例#1: 複製

4 3 

2 5 4 3

2 1 3

3 2 4

4 2 4

輸出樣例#1: 複製

-1 

2

【輸入輸出樣例說明】

第 11份訂單滿足後,44天剩餘的教室數分別為 0,3,2,30,3,2,3。第 22 份訂單要求第 22天到第 44 天每天提供33個教室,而第 33 天剩餘的教室數為22,因此無法滿足。分配停止,通知第22 個申請人修改訂單。

差分陣列   和字首和差不多  維護區間增減情況

而所謂的差分陣列,即是字首和陣列的逆運算:

我們給定前i個數相鄰兩個數的差(1<=i<=n),求每一項a[i](1<=i<=n)。

此時無非就是用作差的方式求得每一項,此時我們可以有乙個作差陣列diff,diff[i]用於記錄a[i]-a[i-1],然後對於每一項a[i],我們可以遞推出來:

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

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

return1;

}int

main()

while(l<=r)

cout

<<"-1"

<1

;

return0;

}

view code

洛谷 P1083 借教室 二分 差分陣列

在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式設計解決這個問題。我們需要處理接下來n nn天的借教室資訊,其中第i ii天學校有r ir i ri 個...

洛谷 P1083 借教室 (差分陣列 二分)

今天很偶然看到了乙個挺好的關於差分陣列的講解,之前打比賽也遇到過,只是沒有很系統的了解過這個神奇的東西。學完之後真的覺得這種思想真的是十分的巧妙,然後就做了一下講解裡的例題。include define int long long using namespace std const int maxn...

洛谷 P1083 借教室

在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式設計解決這個問題。我們需要處理接下來n天的借教室資訊,其中第i天學校有ri個教室可供租借。共有m份訂單,...