問題描述
假設要在足夠多的會場裡安排一批活動,並希望使用盡可能少的會場.設計乙個有效的貪心演算法進行安排(這個問題實際上是著名的圖著色問題,若將每乙個活動作為圖的乙個頂點,不相容活動間用邊相連,使相鄰頂點著有不同顏色的最小著色數,相應於要找的最小會場數) .
演算法思想
把所有活動的開始時間和結束時間按從小到大的順序排列,依次遍歷,當遇到開始時間時,count++,當遇到結束時間時,count–,最後,count的最大值就是安排這些活動所需要的最小會場數.
ps(說一下我的理解):當遇到開始時間時,為其分配乙個會場舉行活動,因為開始的時間一定比結束的時間早,當我遇到乙個結束時間時,說明這個活動已經結束,這個會場現在已經空閒,count–,我可以用這個會場去安排別的活動,所以,count的最大值就是我所需的安排這些所有活動所需要的最小的會場數.
**如下:
問題描述如上.#include
#include
#include
using
namespace
std;
struct time
;int greedy(vector
x)); //混排
for(int i=0;i1;i++)
}return max;
}int main()
cout
0;}
* 首先,選擇乙個會場,遍歷所有的活動,把能放在乙個會場的活動放在乙個會場裡(在乙個會場裡安排盡可能多的活動).
* .重新選擇乙個會場,遍歷所有沒有被安排的活動,把相容的活動放在這個會場中.
* 重複第二步,直到所有的活動都被安排.
#include
#include
#include
#include
#include
//在乙個會場裡安排盡可能多的活動
using
namespace
std;
struct activity_info
;int arrangingactivities(vector
acts)
); int count = 0;
int currtime = -1; //當前時間
int i,flag=acts.size(),t=0;
while(flag)
}t++;
}return t;
}int main(void)
cout
<< arrangingactivities(acts)0;}
會場安排問題
會場安排問題 問題描述 假設要在足夠多的會場裡安排一批活動,活動的開始時間和結束時間已知,並希望使用盡可能少的會場。設計乙個有效的演算法進行安排。分析 這個問題實際上是著名的圖著色問題。若將每乙個活動作為圖的乙個頂點,不相容活動間用邊相連。使相鄰頂點著有不同顏色的最小著色數,就對應要找的最小會場數。...
會場安排問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如...
會場安排問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如...