會場安排問題 會場場次 and 活動場次

2021-09-11 19:53:28 字數 1995 閱讀 9039

題目描述

假設要在足夠多的會場裡安排一批活動,並希望使用盡可能少的會場。設計乙個有效的貪心演算法進行安排。(這個問題實際上是著名的圖著色問題。若將每乙個活動作為圖的乙個頂點,不相容活動間用邊相連。使相鄰頂點著有不同顏色的最小著色數,相應於要找的最小會場數。)

對於給定的k個待安排的活動,計算使用最少會場的時間表。

輸入描述

輸入資料的第一行有1 個正整數k(k≤10000),表示有k個待安排的活動。接下來的k行中,每行有2個正整數,分別表示k個待安排的活動開始時間和結束時間。時間以0 點開始的分鐘計。

輸出描述

輸出乙個整數,表示最少會場數。

示例1

輸入:

51 23

12 28

25 35

27 80

36 50

輸出: 3

演算法分析

首先對活動進行排序,開始時間越早排在越前面,如果兩個活動時間相同,則結束時間越早的排在越前面

貪心策略:開始時間最早和持續時間最短的優先安排會場,並記錄會場號,其餘活動的開始時間大於或等於已安排活動的結束時間的安排在同一會場,若某活動的開始時間小於已經安排了會場的活動的結束時間,則安排在另一會場,記錄會場號,依次迴圈,直到所有活動均被安排。

提交**:

#include#include#includeusing namespace std;

int main()

cout << sum << endl;

return 0;

}

題目描述

學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。

小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。

現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如何安排

輸入描述

第一行是乙個整型數m(m<100)表示共有m組測試資料。

每組測試資料的第一行是乙個整數n(1輸出描述

對於每一組輸入,輸出最多能夠安排的活動數量。

每組的輸出佔一行

示例1

輸入:22

1 10

10 11

31 10

10 11

11 20

輸出:1

2

演算法分析

在可選的工作中,每次都選取結束時間最早的工作。

提交**:

#include#include#includeusing namespace std;

typedef pairactivity;

bool act_cmp(activity a1, activity a2)

int main()

sort(acts.begin(), acts.end(), act_cmp);

int sum = 1, end_time = acts[0].second;

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

} cout << sum << endl;

} return 0;

}

會場安排問題

會場安排問題 問題描述 假設要在足夠多的會場裡安排一批活動,活動的開始時間和結束時間已知,並希望使用盡可能少的會場。設計乙個有效的演算法進行安排。分析 這個問題實際上是著名的圖著色問題。若將每乙個活動作為圖的乙個頂點,不相容活動間用邊相連。使相鄰頂點著有不同顏色的最小著色數,就對應要找的最小會場數。...

會場安排問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如...

會場安排問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如...