1099 任務執行順序(貪心)
阿新 • • 發佈:2018-11-30
1099 任務執行順序
1 秒 131,072 KB 20 分 3 級題
思路:
答案 = 要佔用的空間 + 最小執行時淨佔用
最小執行時淨佔用 = min(R[i] - O[i])
程式碼:
package _51_node.greedy; import java.util.ArrayList; import java.util.Scanner; public class ex_1099 { /** * 1099 任務執行順序 * 1 秒 131,072 KB 20 分 3 級題 * 有N個任務需要執行,第i個任務計算時佔R[i]個空間,而後會釋放一部分,最後儲存計算結果需要佔據O[i]個空間(O[i] < R[i])。 * 例如:執行需要5個空間,最後儲存需要2個空間。給出N個任務執行和儲存所需的空間,問執行所有任務最少需要多少空間。 * * 除去必須要的空間之外,還需要加上執行需要的空間 * * 非最優程式碼 * * @param args */ public static void main(String[] args) { Scanner cin = new Scanner(System.in); int n = cin.nextInt(); ArrayList<Point> arrayList = new ArrayList<>(); for (int i = 1; i <= n; i++) { arrayList.add(new Point(cin.nextInt(), cin.nextInt())); } int ans = 0, index = 100000; for (Point point : arrayList) { index = Math.min(point.space - point.take, index); ans += point.take; } System.out.println(ans + index); } static class Point { int space; int take; public Point(int space, int take) { this.space = space; this.take = take; } } }