java acm 中的 multiset

博客介绍了在ACM竞赛中Multiset的用途,特别是在需要二分查找和删除元素的场景下。由于Java标准库中没有内置Multiset,作者分享了自己实现Multiset的思路和过程,包括使用TreeSet实现元素可重复,并通过重写compareTo方法解决删除问题,最终成功实现Multiset的基本功能。
摘要由CSDN通过智能技术生成

acm中multiset的用处

multiset的就是在set中不去除重复的元素,对于acm某些题目要用到二分查找某个东西然后删除掉的功能的时候是非常有帮助的。举个例子,就类比于计算机操作系统中的内存分配的最佳适应算法,每次都要找到一个最佳的分区(刚好大于或等于)的空间来分配给新的任务。相当于一个贪心的过程,multiset自带的二分还有插入删除都是logn的,所以非常适合做这类题目。

JAVA中我在百度上没找到自带的multiset方法

java和c++的set相似的set就是treeset,但是都没找到如何在treeset里实现元素可重复的方法。

自己实现

思路

既然要打acm,那肯定不能用第三方的包了
自己实现一个
先实现treeset中元素可重复
利用java中的

implements Comparable<T>

接口可以实现自定义的排序方式
那么我们可以先这样干

    static class Item implements Comparable<Item> {
   
        int a;

        @Override
        public String toString() {
            return "Item [a=" 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值