題目:
有n個任務需要執行,第i個任務計算時佔r
i i
個空間,而後會釋放一部分,最後儲存計算結果需要佔據o
i i
個空間(o
i i
< r
i i
)。例如:執行需要5個空間,最後儲存需要2個空間。給出n個任務執行和儲存所需的空間,問執行所有任務最少需要多少空間。
思路:有很多不同儲存記憶體的任務,你要同時兼顧執行記憶體和儲存記憶體,盡量先執行執行記憶體大的和儲存記憶體小的。有0.6b執行記憶體,0.3b儲存記憶體的任務和0.9b,0.8b的任務,先執行0.6b的。如果差值很大的後面執行,可能在執行記憶體的時候需要很大,但儲存時又需要很少,就很造成浪費。
#include#includeusing namespace std;
struct node a[100000+5];
bool cmp(node x, node y)
int main()
sort(a, a + n, cmp);
int cur = 0;//當前的儲存記憶體
for (i = 0; i < n; i++)
cur += a[i].sto;
}cout << minsum << endl;
}return 0;
}
任務執行順序
有n個任務需要執行,第i個任務計算時佔r i 個空間,而後會釋放一部分,最後儲存計算結果 需要佔據o i 個空間 o i r i 例如 執行需要5個空間,最後儲存需要2個空間。給出n個任務執行和儲存所需的空間,問執行所有任務最少需要多少空間。input 第1行 1個數n,表示任務的數量。2 n 10...
51NOD 任務執行順序
有n個任務需要執行,第i個任務計算時佔r i 個空間,而後會釋放一部分,最後儲存計算結果需要佔據o i 個空間 o i r i 例如 執行需要5個空間,最後儲存需要2個空間。給出n個任務執行和儲存所需的空間,問執行所有任務最少需要多少空間。思路 這是乙個貪心演算法,依據執行空間 儲存空間的大小排序即...
任務執行順序(51nod
有n個任務需要執行,第i個任務計算時佔r i 個空間,而後會釋放一部分,最後儲存計算結果需要佔據o i 個空間 o i r i 例如 執行需要5個空間,最後儲存需要2個空間。給出n個任務執行和儲存所需的空間,問執行所有任務最少需要多少空間。輸入 第1行 1個數n,表示任務的數量。2 n 100000...