活動安排問題(貪心)

2022-03-03 18:58:24 字數 1649 閱讀 1083

description

設有n個活動的集合e=,其中,每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si

<fi。如果選擇了活動i,則它在半開時間區間[si,fi)內占用資源。若區間[si,fi)與區間[sj,fj)不相交,則稱活動i與活動j是相容的。也就是說,當sifjsjfi時,活動i與活動j相容。活動安排問題就是要在所給的活動集合中選出最大的相容活動子集合。

input

輸入的第乙個為測試樣例的個數t,接下來有t個測試樣例。

每個測試樣例的第一行是乙個整數nn≤ 1000 ),表示有n個活動。

接下來n行,每行兩個整數sifi表示第i個活動的起始時間和結束時間。

output

對應每個測試樣例輸出一行,格式為"case #: d",其中'#'表示第幾個測試樣例(從1開始計),d為最大的相容活動子集合的活動數量。

sample input

1

111 4

3 50 6

5 73 8

5 96 10

8 11

8 12

2 13

12 14

sample output

case 1: 4

#include#include

#include

using

namespace

std;

struct

action;

action a[

1001

];bool cmp(const action &a,const action &b)

int selector(int

n,action a)

}return

sum;

}int

main()

sort(a,a+n+1

,cmp);

int sum =selector(n,a);

cout

<< "

case

"<< i << ": "

<< sum <}

}

貪心 活動安排問題

貪心演算法得到的並不一定是問題的整體最優解。但在這個問題中,貪心演算法最終確定的相容活動集合a的規模最大。描述 11件活動,各自有不同的開始和結束時間。求在所給活動的集合眾選出最大的相容活動子集合。include using namespace std bool a 11 int s 11 int ...

活動安排問題 貪心

有若干個活動,第i個開始時間和結束時間是 si,fi 同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?input 第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於10000...

貪心 活動安排問題

活動安排問題就是要在所給的活動集合中選出最大的相容活動子集合,是可以用貪心演算法有效求解的很好例子。該問題要求高效地安排一系列爭用某一公共資源的活動。貪心演算法提供了乙個簡單 漂亮的方法使得盡可能多的活動能相容地使用公共資源。設有n個活動的集合e 其中每個活動都要求使用同一資源,如演講會場等,而在同...