問題描述:
設有n個活動的集合e=,其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si
求解思路:
將活動按照結束時間進行從小到大排序。然後用i代表第i個活動,s[i]代表第i個活動開始時間,f[i]代表第i個活動的結束時間。按照從小到大排序,挑選出結束時間盡量早的活動,並且滿足後乙個活動的起始時間晚於前乙個活動的結束時間,全部找出這些活動就是最大的相容活動子集合。事實上系統一次檢查活動i是否與當前已選擇的所有活動相容。若相容活動i加入已選擇活動的集合中,否則,不選擇活動i,而繼續下一活動與集合a中活動的相容性。若活動i與之相容,則i成為最近加入集合a的活動,並取代活動j的位置。
#include
#include
using namespace std;
int n;
struct node
data[24];
int cmp(struct node a,struct node b)
} cout<
活動安排(貪心)
設有n個活動的集合e 其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si輸入 第一行乙個整數n 1 n 1000 接下來的n行,每行兩個整數si和fi。輸出輸出互相相容的最大活動個數。樣例輸...
活動安排 (貪心)
題目出處 像這種已知各活動的起止時間,求能參加活動 相容 的最大個數的問題,關鍵在於各活動的結束時間,依照結束時間將各活動 從小到大 排序,這樣當乙個活動結束時,可以立刻找出起始時間與這個活動結束時間間隔最小 或為0 且持續時間最短的活動,重複這個過程知道所有活動都已遍歷。附 include inc...
貪心 活動安排
問題 a 貪心 活動安排3 時間限制 1 sec 記憶體限制 128 mb 提交 狀態 題目描述 設有n個活動的集合e 其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si我的 之前編譯錯誤一...