1. 程式人生 > >1099 任務執行順序(貪心)

1099 任務執行順序(貪心)

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;
        }
    }
}