問題描述
有n項工作,每項工作分別在si開始,ti結束。對每項工作,你都可以選擇參加或不參加,但選擇了參加某項工作就必須至始至終參加全程參與,即參與工作的時間段不能有重疊(即使開始的時間和結束的時間重疊都不行)。問最多可以完成多少項工作?
限制條件:
1<=n<=100000
1<=si<=ti<=10^9
第二行輸入n個工作的開始時間。
第三行輸入n個工作的結束時間。
樣例:輸入
n=5s=1 2 4 6 8
t=3 5 7 9 10
輸出
思路:
從結束時間早的開始選方為最佳策略。
**實現:
#include
#include
#include
using
namespace std;
struct worka[
100005];
bool
compare
(work a,work b)
//定義排序規則
intmain()
} cout
}
貪心解決區間排程問題
有n項工作,每項工作分別在si開始,ti結束。對每項工作,你都可以選擇參加或不參加,但選擇了參加某項工作就必須至始至終參加全程參與,即參與工作的時間段不能有重疊 即使開始的時間和結束的時間重疊都不行 目標 參與盡可能多的工作,那麼最多能參與多少項工作 限制條件 1 n 100000 1 si ti,...
區間排程問題 貪心演算法
問題 有 n 項工作,每項工作分別在 s i 時間開始,在 t i 時間結束 對於每項 工作,你都有可以選擇參與與否。如果選擇了參與,那麼自始自終都必須全程參與。此外,參與工作的時間段不能重疊 即使是開始的瞬間和結束的瞬間的重疊也 是不允許的 include include include usin...
區間排程問題 貪心演算法
一 題目 區間排程問題 有n項工作,每項工作分別在si時間開始,在ti時間結束。對於每項工作,你都可以選擇參與與否。如果選擇了參與,那麼自始至終都必須全程參與。此外,參與工作的時間段不能重複 即使是開始的瞬間和結束的瞬間的重疊也是不允許的 你的目標是參與盡可能多的工作,那麼最多能參與多少項工作呢?1...