nyoj 14 會場安排問題 貪心演算法

2021-08-21 19:52:48 字數 1193 閱讀 3725

貪心演算法(又稱貪婪演算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。

貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態,只與當前狀態有關。

貪心演算法的基本思路是從問題的某乙個初始解出發一步一步地進行,根據某個優化測度,每一步都要確保能獲得區域性最優解。每一步只考慮乙個資料,他的選取應該滿足區域性優化的條件。若下乙個資料和部分最優解連在一起不再是可行解時,就不把該資料新增到部分解中,直到把所有資料列舉完,或者不能再新增演算法停止。

了解完貪心演算法後,我們來看一下這道題。

時間限制:3000 ms  |  記憶體限制:65535 kb

難度:3

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

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

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

每組的輸出佔一行

樣例輸入

2

21 10

10 11

31 10

10 11

11 20

樣例輸出

1

2

提示

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

一開始看到這道題,挺懵逼的,然後仔細思考了一陣子,猛然發現會場的安排的多少只與時間表的結束時間有關,與開始時間無關,也就是說2-5與3-5本質上是一樣的,我們需要讓這些時間表的結束時間盡可量的早,才能按更多的活動。所以需要對資料進行一波處理,即對時間表按照結束時間從早到晚進行排序。

**如下:

#include #include #include #include using namespace std;

int n,m;

struct sl

;sl s[10005];

int compare (const void *a,const void *b)

int main()

}printf("%d\n",num);

}return 0;

}

貪心演算法 nyoj 14 會場安排

題目詳情 時間限制 3000 ms 記憶體限制 65535 kb 描述學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如何...

NYOJ 14 會場安排問題 貪心

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如...

nyoj 14 會場安排問題 貪心

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如...