設有n個活動的集合e=,其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si< fi。如果選擇了活動i,則它在半開時間區間[si,fi]內占用資源。若區間[si,fi]與區間[sj,fj]不相交,則稱活動i與活動j是相容的。也就是說,當si≥fi或sj≥fj時,活動i與活動j相容。活動安排問題就是要在所給的活動集合中選出最大的相容活動子集合。
思路
碰見此類問題,我們就是選擇出最大的相容活動的子集合數,那麼就想出解決問題的策略,我們可以將所有活動的時間段放在數軸上,從左到右進行觀察,可以發現,既然都是按乙個算,那麼為何不選結束時間最早的呢?這樣一來對後面的影響就會時最小的,而且當前的最優與後面的無任何關係。
12 34 5
6 78 9
1011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
32
#include#include#include#includeusing namespace std;const int maxn=1e3+10;
struct node
} cout << res << endl;
}
活動安排問題 區間貪心
題目描述 假設某社團某一天要組織?個活動?其中每個活動都要求使用同一禮堂,而且 在同一時間內只有乙個活動能使用這個禮堂。每個活動?都有乙個要求使用禮堂的起始時間?和結束時間 且有?如果選擇了活動?則它在半開時間區間 內占用資源。若 區間 與區間 不相交,則稱活動?與活動?是相容的。現在給定?個活動的...
活動安排問題(區間類貪心)
題意 設有n個活動的集合e 其中,每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si fi。如果選擇了活動i,則它在半開時間區間 si,fi 內占用資源。若區間 si,fi 與區間 sj,fj ...
貪心 活動安排問題
貪心演算法得到的並不一定是問題的整體最優解。但在這個問題中,貪心演算法最終確定的相容活動集合a的規模最大。描述 11件活動,各自有不同的開始和結束時間。求在所給活動的集合眾選出最大的相容活動子集合。include using namespace std bool a 11 int s 11 int ...