貪心法解決區間排程問題 快速排序

2021-08-02 12:39:05 字數 905 閱讀 3527

學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如何安排。

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

每組測試資料的第一行是乙個整數n(1

輸出:對於每一組輸入,輸出最多能夠安排的活動數量。每組的輸出佔一行。

樣例輸入:2

2 1 10

10 11 3

1 10

10 11

11 20

樣例輸出:1

2

//此題採用貪心法解決,貪心法總是選取當前最優解,在此題中,先按照結束時間進行活動排序,然後開始依次尋找相容性最大的活動集合(直至無法找到下乙個可以進行的活動,結束尋找)

//需要特別注意的是,如果選用效率較低的排序方法,如氣泡排序或者選擇排序,時間複雜度為o(n*n),就會發生超時,所以採用快排

**如下,歡迎指正:

#include

#include

#include

using namespace std;

const int maxn=10000+5;

typedef structdata;

data time[maxn];

void quick_sort(int left,int right)

cout<

貪心解決區間排程問題

有n項工作,每項工作分別在si開始,ti結束。對每項工作,你都可以選擇參加或不參加,但選擇了參加某項工作就必須至始至終參加全程參與,即參與工作的時間段不能有重疊 即使開始的時間和結束的時間重疊都不行 目標 參與盡可能多的工作,那麼最多能參與多少項工作 限制條件 1 n 100000 1 si ti,...

貪心法 區間覆蓋問題

區間覆蓋問題。數軸上有n個閉區間 a i,bi 選擇盡量少的區間覆蓋一條指定線段 s t 先進行預處理,將不包含 s t 的區間都去掉,然後再按左區間從小到大排序。如果最小區間的左區間大於 s 的話,則無解。選取包含 s的右區間最大的區間,該區間的右區間仍然小於下乙個區間的左區間,則無解。按照這樣的...

區間排程問題(貪心)

問題描述 有n項工作,每項工作分別在si開始,ti結束。對每項工作,你都可以選擇參加或不參加,但選擇了參加某項工作就必須至始至終參加全程參與,即參與工作的時間段不能有重疊 即使開始的時間和結束的時間重疊都不行 問最多可以完成多少項工作?限制條件 1 n 100000 1 si ti 10 9 第二行...