1. 程式人生 > >最優排程問題

最優排程問題

【問題描述】
用2 臺處理機A 和B 處理n 個作業。設第i 個作業交給機器A 處理時需要時間ai
若由機器B 來處理,則需要時間bi。由於各作業的特點和機器的效能關係,很可能對於某
些i,有ai>=bi ,而對於某些j,j≠i, 有aj < bj 。既不能將一個作業分開由2 臺機器處理,
也沒有一臺機器能同時處理2 個作業。設計一個演算法,使得這2 臺機器處理完這n 個作業
的時間最短(從任何一臺機器開工到最後一臺機器停工的總時間)。研究一個例項:
(a1,a2,a3,a4,a5,a6)=(2,5,7,10,5,2);(b1,b2,b3,b4,b5,b6)=(3,8,4,11,3,4)。程式設計任務:對於給定
的2 臺處理機A 和B 處理n 個作業,找出一個最優排程方案,使2 臺機器處理完這n 個
作業的時間最短。
【輸入格式】
第1 行是1 個正整數n, 表示要處理n 個作業。接下來的2 行中,每行有n 個正整數,
分別表示處理機A 和B 處理第i 個作業需要的處理時間。
【輸出格式】
一個數表示最短處理時間
【樣例輸入】
62
5 7 10 5 2
3 8 4 11 3 4
【樣例輸出】

15

首先想到揹包問題解法:DP。
但是我懶得想它的狀態轉移方程,於是來一發記憶化搜尋。
對當前任務而言,無非放在A機器與B機器執行,
用ta記錄A時間,用tb記錄B時間,
則狀態:
dfs(x+1,ta+tia[x],tb);//放在A執行
dfs(x+1,ta,tb+tib[b]);//放在B執行

貼程式碼:

#include<iostream>
#include<cstdio>
using namespace std;
int tia[310]={0};
int tib[310]={0};
bool steps[305][502][550];
void
dfs(int x,int ta,int tb); int n,maxmin=2100000000; int main() { int a; cin>>n; for (a=1;a<=n;a++) scanf("%d",&tia[a]); for (a=1;a<=n;a++) scanf("%d",&tib[a]); dfs(1,0,0); cout<<maxmin; return 0; } void dfs(int x,int ta,int tb) { if (steps[x][ta%501][tb%549]) return ; //記憶化,判斷當前位是否被搜
steps[x][ta%501][tb%549]=1; //標記被搜 if (x>n) { maxmin=min( max(ta,tb), maxmin ); return ; } dfs(x+1,ta+tia[x],tb); dfs(x+1,ta,tb+tib[x]); }

搜尋改記憶化很簡單,其實也就2句話:判斷狀態是否重複,標記狀態已使用。
動態規劃本質是不重複地遍歷所有狀態,而記憶化搜尋也可以做到,
故記憶化搜尋效率與DP相近。
但當搜尋裡帶有迴圈時,記憶化搜尋的效率要低出DP很多。

相關推薦

獨立任務排程(雙機排程)問題

    用兩臺處理機AAA和BBB處理nnn個作業。設AAA和BBB處理第kkk個作業的時間分別為aka_kak​和bkb_kbk​。由於各個作業的特點和機器效能的關係,對某些作業,在AAA上的處理時間長;而對另一些作業,在BBB上的處理時間更長。一臺處理機在某

排程問題

【問題描述】 用2 臺處理機A 和B 處理n 個作業。設第i 個作業交給機器A 處理時需要時間ai 若由機器B 來處理,則需要時間bi。由於各作業的特點和機器的效能關係,很可能對於某 些i,有ai>=bi ,而對於某些j,j≠i, 有aj <

動態規劃之獨立任務排程問題 問題描述

1.問題描述 用2 臺處理機A 和B 處理n個作業。設第i 個作業交給機器A 處理時需要時間ai,若由機器B來處理,則需要時間bi。由於各作業的特點和機器的效能關係,很可能對於某些i,有ai>=bi,而對於某些j,j≠i,有aj<bj,既不能將一個作業分開由2 臺機器處理,也沒有一臺機器能同時處

獨立任務排程(動態規劃)

題目: 用兩臺處理機A和B處理n個作業。設A和B處理第k個作業的時間分別為ak和bk。由於各個作業的特點和機器效能的關係,對某些作業,在A上的處理時間長;而對另一些作業,在B上的處理時間更長。一臺

王曉東 獨立任務排程問題

方法1: #include "stdio.h" #include "string.h" #define MX 10 #define MAX(a, b) ((a)>(b)?(a):(b)) #define MIN(a, b) ((a)<(b)?(a):(b))

獨立任務排程問題

問題:獨立任務最優排程,又稱雙機排程問題:用兩臺處理機A和B處理n個作業。設第i個作業交給機器A處理時所需要的時間是a[i],若由機器B來處理,則所需要的時間是b[i]。現在要求每個作業只能由一臺機器處理,每臺機器都不能同時處理兩個作業。設計一個動態規劃演算法,使得這兩

演算法_動態規劃_獨立任務排程問題

問題描述   用2 臺處理機A 和B 處理n個作業。設第i 個作業交給機器A 處理時需要時間ai,若由機器B來處理,則需要時間bi。由於各作業的特點和機器的效能關係,很可能對於某些i,有ai>=bi,而對於某些j,j≠i,有aj import java

南郵 OJ 1220 獨立任務排程問題

獨立任務最優排程問題 時間限制(普通/Java) : 1000 MS/ 3000 MS          執行記憶體限制 : 65536 KByte 總提交 : 164            測試通

String 經常用法算法實現總結 (二)

lean ... itl min empty turn system then 實現 1. String getOrderedString(boolean isDuplicated, String … str) 說明: Orders all characters in

[POJ 2728]Desert King(0-1分數規劃/比率生成樹)

eat ice finall nec clu bool ann channels try Description David the Great has just become the king of a desert country. To win the respec

Uva 10003 Cutting Sticks (類似於矩陣連乘的dp)

out min 分析 sin [] can 任務 cin algo 題意:有一根長度為L的木棍,和n個切割點的位置(按照從小到大排序),你的任務是在這些切割點的位置把棍子切成n+1份,使得總切割費用最小。每次切割的費用等於被切的木棍長度 思路:這道題與最優矩陣連乘的思想一樣

(筆記)斯坦福機器學習第七講--間隔分類器

滿足 優化 最終 clas 定義 mar 擴展 strong play 本講內容 1.Optional margin classifier(最優間隔分類器) 2.primal/dual optimization(原始優化問題和對偶優化問題)KKT conditions(KK

POJ 3621 Sightseeing Cows(比例環+SPFA檢測)

span fort exp ros 說明 6.0 lines choice stdio.h Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total Submission

P1073 貿易

相同 一種商品 ade bar article https 同城 最大 pre P1073 最優貿易 題目描述 C 國有 n 個大城市和 m 條道路,每條道路連接這 n 個城市中的某兩個城市。任意兩個 城市之間最多只有一條道路直接相連。

267. [NOI1997] 乘車

names ios 可能 while include 他在 printf 數字 i+1 ★★ 輸入文件:bustravel.in 輸出文件:bustravel.out 簡單對比 時間限制:1 s 內存限制:128 MB H城是一個旅遊勝地,每年都有成千上萬的

【圖論】貿易

價格 highlight style 不同 相同 -s 存在 n) size [NOIP2009]最優貿易 描述   C 國有 n 個大城市和 m 條道路,每條道路連接這 n 個城市中的某兩個城市。任意兩個城市之間最多只有一條道路直接相連。這 m 條道路中有一部分為單向

bzoj2539 丘比特的煩惱、黑書P333 (二分圖匹配)

def 等於 ostream while 感情 deb valentine 區分 匹配 丘比特的煩惱 題目描述 Description   隨著社會的不斷發展,人與人之間的感情越來越功利化。最近,愛神丘比特發現,愛情也已不再是完全純潔的了。這使得丘比特很是苦惱,

【NOIP2009】貿易

!= 連通 最大 sub 旅行 ret 空格 十分 100% Description C 國有 n 個大城市和 m 條道路,每條道路連接這 n 個城市中的某兩個城市。任意兩個城市之間最多只有一條道路直接相連。這 m 條道路中有一部分為單向通行的道路,一部分為雙向通行的

luogu P1073 貿易

pac 如果 他會 eight lap 同時 ems 正整數 space luogu P1073 最優貿易 2017-09-14 題目描述 C 國有 n 個大城市和 m 條道路,每條道路連接這 n 個城市中的某兩個城市。任意兩個城市之間最多只有一條道路直接相連。這 m 條

【NOIP2009提高組】貿易

bfs sync out logs push_back push cin tps span https://www.luogu.org/problem/show?pid=1073 如果他想在i點賣出,那麽就要在從1點出發到i點的路徑裏找個最便宜的買入,用Bellman-Fo