10-12 华为笔试第二题95%求指正

第一题AC 第三题放弃 忘记记录题目了有同场次的同学希望可以分享一下
希望来个大佬指正一下第二题哪里有问题
package Huawei;

import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Code1012_002 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        int x = sc.nextInt();
        if(x==0||m==0||n==0){
            System.out.println(0);
            return;
        }
        int[][] pass = new int[x][2];
        for (int i = 0; i < x; i++) {
            pass[i][0]= sc.nextInt();
            pass[i][1]= sc.nextInt();
        }
        class Customer{
            int start;
            int end;
            int last ;
            Customer(int s, int e){
                start=s;
                end = e;
                last = e-s;
            }
        }
        class CusComp implements Comparator<Customer> {
            @Override
            public int compare(Customer a, Customer b) {
                if(b.last==a.last){
                    return a.end-b.end;
                }
                //小在前大在后

                return b.last-a.last ;
            }
        }
        PriorityQueue<Customer> customers= new PriorityQueue<>(new CusComp());
        PriorityQueue<Customer> temp= new PriorityQueue<>(new CusComp());
        for (int i = 0; i < x; i++) {
            customers.add(new Customer(pass[i][0],pass[i][1]));
        }
        int ans = 0;
        for (int i = 0; i < m; i++) {
            if(i>0){
                customers = temp;
                temp=new PriorityQueue<>(new CusComp());
            }
            int start = 10;
            int end = 0;
            while(!customers.isEmpty()){
                Customer cust = customers.poll();
                if((cust.start>=end||cust.end<=start)){
                    //加进去
                    if(cust.end>=n){
                        ans+=(n-1)-(cust.start);
                    }else{
                        ans+=cust.last;
                    }

                    end = Math.max(end,cust.end);
                    start = Math.min(start,cust.start);
                }else{
                    temp.add(cust);
                }
            }
        }
        System.out.println(ans);
    }


}


#华为笔试#
全部评论
可以求个第一题的答案嘛
1 回复 分享
发布于 2022-10-16 11:06 新加坡
题目是座位利用率
点赞 回复 分享
发布于 2022-10-13 02:28 美国
能分享一下题目嘛
点赞 回复 分享
发布于 2022-10-15 16:30 湖北
python选手表示看不懂,楼主能不能讲一讲第二题思路呀
点赞 回复 分享
发布于 2022-10-18 09:28 广东

相关推荐

评论
点赞
3
分享
牛客网
牛客企业服务