總時間限制: 1000ms 記憶體限制: 65536kb
描述
大學生電影節在北大舉辦! 這天,在北大各地放了多部電影,給定每部電影的放映時間區間,區間重疊的電影不可能同時看(端點可以重合),問李雷最多可以看多少部電影。
輸入
多組資料。每組資料開頭是n(n<=100),表示共n場電影。
接下來n行,每行兩個整數(0到1000之間),表示一場電影的放映區間
n=0則資料結束
輸出
對每組資料輸出最多能看幾部電影
樣例輸入
83 4
0 73 8
15 19
15 20
10 15
8 18
6 12
0樣例輸出
3解析
此題可用貪心演算法求解,思路為:將所有電影按結束時間先後排序,首先選擇結束時間最早的電影,下一步電影為開始時間大於等於前一部電影的結束時間的電影中結束時間盡可能小的電影。
證明這種貪心演算法的正確性:
假設貪心得到的序列為a1,a2,a3…
不使用貪心得到的最長電影序列為:b1,b2,b3…
現在證明對於任意的i,ai都可以替換bi:
設start[m]表示電影m的開始時間,end[m]表示結束時間,那麼:
(1)end[a1]<=end[b1],所以a1可以替換b1;
(2)若找到乙個i,end[ai]<=end[bi],又end[bi]<=start[bi+1],所以end[ai] <=start[bi+1],所以ai可以替換bi;此時ai+1是滿足條件中,end最小的電影,因此用ai+1替換bi+1不會影響結果。
**
#include#includeusing namespace std;
struct movm[1000];
bool cmp(mov a,mov b)
sort(m,m+n,cmp);
mov temp=m[0];
sum++;
for(int i=1;i=temp.end)
}cout<} }
return 0;
}
百煉oj 4151 電影節
總時間限制 1000ms 記憶體限制 65536kb 描述大學生電影節在北大舉辦 這天,在北大各地放了多部電影,給定每部電影的放映時間區間,區間重疊的電影不可能同時看 端點可以重合 問李雷最多可以看多少部電影。輸入多組資料。每組資料開頭是n n 100 表示共n場電影。接下來n行,每行兩個整數 0到...
百練4151電影節
百練4151電影節 大學生電影節在北大舉辦 這天,在北大各地放了多部電影,給定每部電影的放映時間區間,區間重疊的電影不可能同時看 端點可以重合 問李雷最多可以看多少部電影。輸入多組資料。每組資料開頭是n n 100 表示共n場電影。接下來n行,每行兩個整數 0到1000之間 表示一場電影的放映區間 ...
北大 OJ 4151 電影節(貪心)
總時間限制 1000ms 記憶體限制 65536kb 描述大學生電影節在北大舉辦 這天,在北大各地放了多部電影,給定每部電影的放映時間區間,區間重疊的電影不可能同時看 端點可以重合 問李雷最多可以看多少部電影。輸入多組資料。每組資料開頭是n n 100 表示共n場電影。接下來n行,每行兩個整數 0到...