區間排程問題(貪心)

2021-10-05 03:32:32 字數 696 閱讀 2461

問題描述

有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...