演講大廳安排 題解

2021-08-29 00:09:26 字數 1071 閱讀 9988

演講大廳安排

description

有乙個演講大廳需要我們管理,演講者們事先定好了需要演講的起始時間和中止時間。我們想讓演講大廳得到最大可能的使用。我們要接受一些預定而拒絕其他的預定,目標是使演講者使用大廳的時間最長。假設在某一時刻乙個演講結束,另乙個演講就可以立即開始。

請依據演講者的申請,計算出演講大廳最大可能的使用時間

input

第一行為乙個整數 n,n≤5000,表示申請的數目。

以下 n 行每行包含兩個整數 p,k,1 ≤ p < k ≤ 30000,表示這個申請的起始時間和終止時間。

output

包含乙個整數,表示大廳最大可能的使用時間。

sample input 1

121 2

3 50 4

6 87 13

4 69 10

9 12

11 14

15 19

14 16

18 20

sample output 1

這是一道基於時間軸的dp,也就是說,你只需要順著時間軸走一遍就可以知道答案了;

首先存資料的方法與一般的直接存不同,只用存開始的時間點以及其持續的長度就可以了(值得注意的是乙個時間點可以同時是幾個演講開始的時間點);

存資料是可以順便將最後的乙個時間點記下作為for迴圈的邊界,然後開始dp;

每到下乙個時間點,先判斷是否繼承上乙個小時,再判斷是否有演講開始,如果有直接在演講結束的時間點插入乙個dp[i],表示到i小時最多的演講時間,到後來for迴圈到了是自然會判斷是否需要開始演講(好像有點抽象),簡單的說就是假設每個演講都批准,又同時假設不批准,因為批准的情況是直接插入的,所以對於中間的時間沒有影響,而到了演講結束的時候再判斷;

這樣講起來可能太抽象,還是上**:

#includeusing namespace std;

int n,sj,dp[30001],t[30001],ma[100][30001];

int main()

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

//cout<}

cout<}

演講大廳安排

problem description 有乙個演講大廳需要我們管理,演講者們事先定好了需要演講的起始時間和中止時間。我們想讓演講大廳得到最大可能的使用。我們要接受一些預定而拒絕其他的預定,目標是使演講者使用大廳的時間最長。假設在某一時刻乙個演講結束,另乙個演講就可以立即開始。程式設計任務,計算演講大...

演講大廳安排

演講大廳安排 問題描述 有乙個演講大廳需要我們管理,演講者們事先定好了需要演講的起始時間和中止時間。我們想讓演講大廳得到最大可能的使用。我們要接受一些預定而拒絕其他的預定,目標是使演講者使用大廳的時間最長。假設在某一時刻乙個演講結束,另乙個演講就可以立即開始。程式設計任務 計算演講大廳最大可能的使用...

大廳安排 normal

題意 有乙個演講大廳需要george管理,演講者們事先定好了需要演講的起始時間和中止時間。george想讓演講大廳得到最大可能的使用。我們要接受一些預定而拒絕其他的預定,目標自然是使演講者使用大廳的時間最長。為方便起見,假設在某一時刻乙個演講結束,另乙個演講就可以立即開始。計算演講大廳最大可能的使用...