心急的C小加

来源:互联网 发布:尘埃落定 知乎 编辑:程序博客网 时间:2024/06/10 09:38

题目:C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗?
思路:先将木棒按照长度来进行排序,如果长度相同就按照重量来进行排序;利用贪心的方法依次筛选。

import java.util.Arrays;import java.util.Scanner;public class Main implements Comparable<Main>{    int weight;    int length;    public Main(int weight,int length){        this.length=length;        this.weight=weight;    }    public static void main(String[] args) {        Scanner input=new Scanner(System.in);         int t=input.nextInt();         while (t-->0) {            int n=input.nextInt();            Main arr[]=new Main[n];            for (int i = 0; i < arr.length; i++) {                int temp1=input.nextInt();                int temp2=input.nextInt();                arr[i]=new Main(temp2, temp1);            }            Arrays.sort(arr);            int count=0;            int temp=0;//          for (int i = 0; i < arr.length; i++) {//              System.out.println(arr[i].length);//              System.out.println(arr[i].weight);//          }            for (int i = 0; i < arr.length; i++) {                if (arr[i].weight!=0) {                    temp=arr[i].weight;                    count++;                    for (int j = i+1; j < arr.length; j++) {                        if (arr[j].weight>=temp) {                            temp=arr[j].weight;                            arr[j].weight=0;                        }                    }                }            }            System.out.println(count);        }        // TODO Auto-generated method stub    }    public int compareTo(Main m){        if (this.length<m.length) {            return -1;        }        if (this.length==m.length && this.weight<m.weight) {            return -1;        }        return 1;    }}
原创粉丝点击