演算法 會場安排問題 簡單解法

2021-10-10 07:25:14 字數 920 閱讀 7251

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

對給定的k個待安排活動,計算使用最少會場的個數

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

每組測試資料的第一行是乙個整數n(1對於每一組輸入,輸出最多能夠安排的活動數量。

每組的輸出佔一行

5

1 23

12 28

25 35

27 80

36 50

3
將開始時間和結束時間分別用兩個一維陣列記錄,並按公升序排序。

對所有會議進行遍歷,若其開始時間小於當前所有會場中最早結束的會議的結束時間,則需要為其開闢新會場,且此時所有會場中最早結束的會議的結束時間不變化。

若大於,則不需要開闢新會場,但是此時所有會場中最早結束的會議的結束時間需要更新,即是結束時間佇列向後一位(因結束時間佇列已被排序,不會出現亂序情況)

#include #include #include #include #include #include #include #include #define mem(a,b) memset(a,b,sizeof (a))

using namespace std;

typedef long long ll;

const int maxn=1e4+5;

int main()

sort(a,a+n);

sort(b,b+n); //用b記錄結束時間

for(i=0;iprintf("%d\n",ans);

}

貪心演算法 會場問題

在題目之前要知道貪心演算法的基本步驟與實現過程 1 貪心法的基本思路 從問題的某乙個初始解出發逐步逼近給定的目標,以盡可能快的地求得更好的解。當達到某演算法中的某一步不能再繼續前進時,演算法停止。該演算法存在問題 不能保證求得的最後解是最佳的 不能用來求最大或最小解問題 只能求滿足某些約束條件的可行...

會場安排問題

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

會場安排問題

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