任務安排問題 貪心 樸實思路

2022-05-03 06:24:07 字數 693 閱讀 9460

【問題描述】有n個任務1~n。假設:

同乙個時間單位你只能處理一項任務;

任務i只能在時刻 ri 後開始處理。 (r1,…rn是給定的)

任務i需要 pi個時間單位才能完成。(p1,…,pn是給定的)

乙個任務可分成多次處理(可停下來等之後繼續處理)。

設計方案使得∑ti最小,ti為任務i被完成的時刻。

例:

吐槽:這個題的要求:"使得∑ti最小"太奇怪了,不懂有什麼實際意義,比如說所有任務完成時刻最小還有實際意義,這個要求可能只是為了作為"貪心"的練習題吧

樸素解法:

用乙個陣列(佇列)存下目前能開始的任務,然後挑需要時長最短的來做一下

記錄新任務入隊時間點,在時間推進過程中判斷有無新任務入隊

定義'重要時間點':有任務結束或新任務入隊

每兩個重要時間點之間都 遍歷佇列找時長最短的(可堆優化)

例如上圖方案b:

時刻1~時刻2之間挑任務1(佇列中僅有乙個任務)

時刻2~時刻3之間挑任務2

時刻3(新任務入隊)~時刻4(乙個任務完成)挑任務2

時刻4~時刻6挑任務3

時刻6~時刻9挑任務1

最後:本題沒有找到oj就不附上**了,有找到oj的朋友還望告知給博主qaq

任務安排問題 貪心

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

任務安排問題

問題描述 活動的定義 輸入 s f n i 1 輸出 s的最大相容集合 演算法描述 1.確定貪心思想 為了可以使得更多的相容活動被包含,每次選fi最小的活動,使得我們能夠選擇更多的活動。2.分析貪心選擇性 引理1 設 s 是n個活動的集合,s,fi 是活動i的起始終止時間,且f1 f2 fn,那麼,...

貪心 活動安排問題

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