活動安排問題

2022-08-20 10:03:11 字數 1244 閱讀 1155

#include#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 10000 + 1

;typedef

struct

point;

point p[maxn];

const

int cmp(const point a, const

point b)

intmain()}}

cout

<< cnt <

}return0;

}

有若干個活動,第i個開始時間和結束時間是[si,fi),只有乙個教室,活動之間不能交疊,求最多安排多少個活動?

分析: 我們就是想提高教室地利用率,盡可能多地安排活動。

考慮容易想到的幾種貪心策略:

(1) 開始最早的活動優先,目標是想盡早結束活動,讓出教室。

然而, 這個顯然不行,因為最早的活動可能很長,影響我們進行後面的活動。例如活動開始和結束時間分別為[0, 100), [1,2) ,[2, 3), [3, 4),[4,5],安排[0,100)的這個活動之後,其他活動無法安排,可是最優解是安排除它外的4個活動。

(2) 短活動優先, 目標也是盡量空出教室。但是不難構造如下反例: [0,5) [5,10) [3, 7), 這裡[3,7)最短,但如果我們安排了[3,7),其它兩個無法安排了。但是最優解顯然是安排其它兩個,而放棄[3,7),可見這個貪心策略也是不行的。

最後,我們來提供輸入輸出資料,由你來寫一段程式,實現這個演算法,只有寫出了正確的程式,才能繼續後面的課程。

輸入

第1行:1個數n,線段的數量(2 <= n <= 10000)

第2 - n + 1行:每行2個數,線段的起點和終點(-10^9 <= s,e <= 10^9)

輸出

輸出最多可以選擇的線段數量。
輸入示例

3

1 52 3

3 6

輸出示例

2

活動安排問題

作為新一代的好青年肯定會喜歡許多的電視節目,比如說新聞聯播,焦點訪談,又如招聘類的節目有非你莫屬,職來職往,娛樂節目如快樂大本營。現在給你每個節目的開始時間和結束時間,要求你求出看盡可能多的完整節目。每個電視節目i都有乙個起始時間si和乙個結束時間fi,且si 對於活動安排問題可以用貪心演算法解決,...

活動安排問題

活動安排 描述 設有n個活動的集合e 其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si 輸入 輸入只有乙個用例,第一行為一正整數n,表示活動個數,接下來n行,每行兩個整數,分別表示第i號活...

活動安排問題

有若干個活動,第i個開始時間和結束時間是 si,fi 同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000 ...