1最佳排程問題
假設有n個任務由k個可並行工作的機器來完成。完成任務i需要的 時間為ti。試設計乙個演算法找到出完成這個n個任務的最佳排程,使得完成全部任務的時間最早。
對任意給定的整數n和k,以及完成任務i需要的時間為ti,1<=i<=n。程式設計計算完成這n個任務的最佳排程。
n<=20,k<=8
第1 行有2個正整數n 和k。第2行的n個正整數是完成n 根任務需要的時間。
計算出的完成全部任務的最早時間
7 32 14 4 16 6 5 3
17這道題讀完有點蒙,一開始想的是深搜每乙個點,然後發現怎麼調都不對
再仔細一想,把每個機器當做容器,不停地把每個任務,放在每個容器裡,
排列組合一下,再用兩個剪枝。
這裡有乙個技巧,就是可以先貪心算出乙個比較好的解,然後用這個解去
減掉深搜時候的大多數枝幹,可以提高速度
#include#includeview code#include
#include
#include
using
namespace
std;
int n,k,ans,a[1001],s[1001
];
bool cmp(int a,int
b)int
readin()
while(ch>='
0'&&ch<='9'
)
returnx;}
void dfs(int x,int
y)
for(i=1;i<=k;i++)
} int
main()
六月二十五
明天就要放假了,今下午的課實在沒什麼人想上。第一節vb課,去了11個,這是因為老師說會透漏考試題,一定要去啊,可還是少得可憐。下課後又走了5個,第二節的作業系統只有6個人去了。本來我不想去的,但因為要問問老師那實驗報告怎麼寫,所以就去了。教學樓第三棟,安靜得有點嚇人,來到五樓沒見乙個同學。自己在陽台...
六月二十四
今天講了陣列的特點,陣列是乙個連續的記憶體空間。陣列中的元素都是變。陣列變數中存放的是連續空間第乙個元素的位址。陣列元素下標從0開始,最大的下標是長度減一。陣列中元素的型別就是申明陣列時定義的型別。陣列建立之後,長度不可以變化。陣列建立後,每個元素都會做初始化。int 0 double 0.0。講了...
六月二十6 日
ubuntu18.04 雖然預設使用了gnome桌面,但是經過測試 gdm 並不能很好得工作,通過設定系統啟動方式,然後重啟來達到關閉 x server 的目的 ps.gdm是gnome display manager,gnome的桌面環境管理器 關閉使用者圖形介面 sudo systemctl s...