活動安排問題 區間貪心

2021-10-04 14:58:25 字數 1025 閱讀 8700

題目描述

假設某社團某一天要組織?個活動? = ,其中每個活動都要求使用同一禮堂,而且 在同一時間內只有乙個活動能使用這個禮堂。每個活動?都有乙個要求使用禮堂的起始時間?? 和結束時間 ??,且有?? < ?? 。如果選擇了活動?,則它在半開時間區間[?? , ??) 內占用資源。若 區間[??, ??) 與區間[??, ??) 不相交,則稱活動?與活動?是相容的。現在給定?個活動的開始時間和結束時間,請設計乙個活動安排方案,使得安排的相容活動數目最多。

輸入第一行是乙個整數n;第二行到第n+1行都有兩個整數,分別是活動i的起始時間和結束時間

輸出輸出滿足條件的活動數目的最大值。

input

111 4

0 63 5

3 85 7

5 96 10

8 11

8 12

2 13

12 14

output

思路假設選取了第乙個活動,則第乙個活動的結束時間會影響下乙個活動的起始時間,怎麼才會使滿足條件的數目達到最大呢?我們讓結束時間小的活動排在最前面,然後依次往後遍歷,如果當前活動的結束時間早於下乙個活動的起始時間,則這個活動滿足條件,這樣就達到最優的效果。

**

#include

#define maxsize 1000

typedef

struct nodenode;

void

swap

(node *a,node *b)

void

bubblesort

(int n,node *arr)

intsolve

(int n,node *arr,node *temp)

}return cnt;

}int

main()

/*11

1 40 6

3 53 8

5 75 9

6 10

8 11

8 12

2 13

12 14

*/

活動安排問題 區間貪心

設有n個活動的集合e 其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si fi。如果選擇了活動i,則它在半開時間區間 si,fi 內占用資源。若區間 si,fi 與區間 sj,fj 不相交,...

活動安排問題(區間類貪心)

題意 設有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 ...