贪心


区间问题

题目

类似题目

思路:

思路

输入样例:

3
-1 1
2 4
3 5

输出样例:

2

代码:

import java.util.*;


public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();

        int[][] range = new int[n][2];


        for (int i = 0; i < n; i++) {
            range[i][0] = in.nextInt();
            range[i][1] = in.nextInt();
        }

        Arrays.sort(range, (x, y) -> x[1] - y[1]);

        int res = 0;
        int ed = (int)-2e9;

        for (int i = 0; i < n; i++) {
           if (range[i][0] > ed){
                res ++ ;
                ed = range[i][1];
            }
        }
        System.out.println(res);
    }
}

Huffman树

题目

思路:

思路

输入样例:

3 
1 2 9 

输出样例:

15

代码:

import java.util.*;

public class Main{
    static int N = 10010, n;
    static int[] a = new int[N];
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        Queue<Integer> minheap = new PriorityQueue<>();
        for(int i = 1; i <= n; i++){
            a[i] = in.nextInt();
            minheap.add(a[i]);
        }
        int res = 0;
        while(minheap.size() > 1){
            int x = minheap.poll();
            int y = minheap.poll();
            res += x + y;
            minheap.add(x + y);
        }
        System.out.println(res);
    }
}

绝对值不等式

题目

思路:

中位数就是最优解

输入样例:

4
6 2 9 1

输出样例:

12

代码:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] a = new int[n];
        for(int i = 0; i < n; i++){
            a[i] = in.nextInt();
        }
        Arrays.sort(a);
        long res = 0;
        for(int i = 0; i < n; i++){
            res += Math.abs(a[i] - a[n / 2]);
        }
        System.out.println(res);
    }
}

文章作者: liuzhangjie
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liuzhangjie !
  目录