HDU 1509 优先队列 Java版

Problem - 1509 (hdu.edu.cn)icon-default.png?t=L892https://acm.hdu.edu.cn/showproblem.php?pid=1509单纯的优先队列题,设置好优先队列的比较规则就行,还需要注意的是,在题目中隐含了一条内容,就是每一个Message都是包括ID(消息进入队列的序号),在两个Message优先级相同的时候,就是序号小的在队列前面。

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

public class Main {

    public static void main(String[] args) {
        new Main().solve();
    }

    private void solve() {
        PriorityQueue<Message> queue = new PriorityQueue<>(new Comparator<Message>() {
            @Override
            public int compare(Message o1, Message o2) {
                if (o1.priority != o2.priority)
                    return o1.priority - o2.priority;
                return o1.id - o2.id;
            }
        });
        Scanner in = new Scanner(System.in);
        int id = 0;
        while (in.hasNext()){
            String op = in.next();
            if ("GET".equals(op)){
                if (!queue.isEmpty()){
                    Message msg = queue.poll();
                    System.out.println(msg.name+" "+msg.parameter);
                }
                else {
                    System.out.println("EMPTY QUEUE!");
                }
            }else {
                String name = in.next();
                int parameter = in.nextInt();
                int priority = in.nextInt();
                queue.add(new Message(id++,name,parameter,priority));
            }
        }
    }

}

class Message {
    int id;
    String name;
    int parameter;
    int priority;

    public Message(int id, String name, int parameter, int priority) {
        this.id = id;
        this.name = name;
        this.parameter = parameter;
        this.priority = priority;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值