做任務(貪心)

2021-08-23 14:39:36 字數 2568 閱讀 4040

做任務一

b君和m個人一起,要完成n個任務,在這個題中,m個人會看著這b君,自己什麼都不做。

第i個任務有乙個開始時間s[i]和結束時間e[i](保證s[i]<=e[i]),乙個人完成兩個任務的時間區間,不能有交集,但是可以首尾相連。(參考樣例)

換句話說,如果乙個人依次完成了(s[1], e[1]) (s[2], e[2]) (s[3], e[3])這3個任務,那麼這3個任務需要滿足s[1]<=e[1]<=s[2]<=e[2]<=s[3]<=e[3]。

同乙個任務只能完成一次,並且中間不能換人。

問b君乙個人最多可以完成多少個任務。

(單組 n <= 100000)

(所有 n 求和 <= 200000)

(開始時間和結束時間,都是非負整數,且在int範圍內。)

(開始時間 <= 結束時間,如果等於的話,意味著這個任務可以瞬間被做完,但是不能沒有人做)

input

多組資料,第一行是資料組數。

每組資料的第一行兩個整數n, m分別表示任務數,和人數。

以下n行,每行兩個整數表示任務的開始時間和結束時間。

output

對於每組資料輸出乙個整數

表示乙個人最多可以完成多少個任務。

input示例

2 2 1

1 3

2 4

2 1

1 3

3 5

output示例 1 2

這個比較水(:з」∠),最常見的方法就是把結束時間從小到大排序

還有一種方法就是把開始時間從小到大排序,如果存在有任務結束時間比當前任務早,就轉而做結束時間早的任務,**如下

#include 

#include

#define ll long long

using

namespace

std;

int main()

sort(a,a+n);

ll sum=0,e=0;

for(i=0;iif(a[i].first>=e)else

if(a[i].secondcout

0;}

做任務3

b君和m個人一起,要完成n個任務,在這個題中,b君和m個人,什麼都不做。

第i個任務有乙個開始時間s[i]和結束時間e[i](保證s[i]<=e[i]),乙個人完成兩個任務的時間區間,不能有交集,但是可以首尾相連。(參考樣例)

換句話說,如果乙個人依次完成了(s[1], e[1]) (s[2], e[2]) (s[3], e[3])這3個任務,那麼這3個任務需要滿足s[1]<=e[1]<=s[2]<=e[2]<=s[3]<=e[3]。

同乙個任務只能完成一次,並且中間不能換人。

b君和m個人,想知道要想完成這些任務,至少需要幾個人?

(單組 n <= 100000)

(所有 n 求和 <= 200000)

(開始時間和結束時間,都是非負整數,且在int範圍內。)

(開始時間 <= 結束時間,如果等於的話,意味著這個任務可以瞬間被做完,但是不能沒有人做)

input

多組資料,第一行是資料組數。

每組資料的第一行兩個整數n, m分別表示任務數,和人數。

以下n行,每行兩個整數表示任務的開始時間和結束時間。

output

對於每組資料輸出乙個整數

表示完成這些任務至少需要多少人。

input示例

4 2 1

1 3

2 4

2 1

1 3

3 5

2 1

1 3

2 2

4 1

1 2

2 2

2 2

2 3

output示例

2 1 2 1

這裡用到了優先佇列(:з」∠),順便簡短的整理一下

priority_queue《結構型別》 佇列名;

q.size();//返回q裡元素個數

q.empty();//返回q是否為空,空則返回1,否則返回0

q.push(k);//在q的末尾插入k

q.pop();//刪掉q的第乙個元素

q.top();//返回q的第乙個元素

順便注意優先佇列的排列是從大到小排列,所以想到從小到大排列就要入隊相反數(:з」∠)

這道題的思路基本就是……將每人做任務結束時間入列,如果沒有人可以做當前任務,那麼當前任務結束時間入列,就是再加一人的意思(:з」∠)

**如下:

#include 

#include

#include

#define ll long long

using

namespace

std;

int main()

else

}cout

0; }

貪心 STL 51nod 做任務三

按左點排序 能幹就幹 幹不了加人 但這次資料非常大 手動模擬超時 需要用到優先佇列 或 mutilset 佇列能解決的set 都可以解決 set支援性更佳 所以個人更傾向於set include include include using namespace std const int maxn 1...

任務安排問題 貪心

今天ckp打算去約會。大家都知道ckp是超級大帥哥,所以和他約會的mm也超級多,她們每個人都和ckp訂了乙個約會時間。但是今天ckp剛打算出門的時候才發現,某幾個mm的約會時間有衝突。由於ckp不會分身,還不能和多個mm同時約會,他只能忍痛割愛拒絕掉某些mm。但是ckp這個花心大蘿蔔還是不死心,他想...

貪心 任務排程問題

問題描述 假設給定n個任務的集合t,每個任務i有啟動時間si和完成時間fi si問題分析 要求 在最少的機器上安排完所有任務。如何選擇貪心策略才能使問題的解為最優解?顯然,開始時間最早的任務需要被先執行,但是最優解要求我們使用的機器最少,因此我們每次選擇時應盡量使用相同的機器。若已使用過的機器上現處...