本题multiset需要掌握的点:
multiset内部实现时平衡二叉树;
multiset允许存储重复的元素;
multiset删除元素k的方法有两种:
比如multiset s;
①s.erase(k);删除所有的k
②s.erase(s.find(k));删除一个k
multiset是排好序的,从小到大排序
multiset删除最后一个元素:
auto t = s.end();t--;
对顶堆实现我们需要构造两个multiset<int> up,down;其中up存储的是比较大的那一半,
而down存储的是较小的那一半,且up的大小与down大小相比,要么就是up比down小1,要么就是相等
插入的时候,需要记住up存放较大的那一部分,down存储较小的那一部分,因此在插
入的需要判断应该插入到哪一个multiset来保证它的这一特性
删除的时候,比较简单了,查看k在哪一个里面,然后删除,删除方式参考前面指出的
multiset删除方法
上述插入与删除操作之后都会遇到一个问题,就是可能破坏up与down的大小的约束
条件,因此需要调用change去调整.