Two Types of Spells

发布时间 2023-11-07 11:47:09作者: Zlc晨鑫

贪心题,先假设全部都是w[i],然后你发现最多可以放电之咒个数的两倍,贪心加上这么多w[i](从大到小),但是你发现不能全是电之咒。

后面的限制不好用数据结构维护,考虑让数据结构维护的东西天然满足这个限制,那么直接删去一个电之咒然后选就行了。

那么肯定删去最小的电之咒。

维护的东西有:

\[\sum^{n}_{i=1}w_i \]

电之咒的集合,支持删除任意元素,插入元素,查询最小值。

所有符咒的集合,支持插入元素,删去任意元素,查询前\(k\)大值的和。

set可以做到前面的要求,后面一个可以用两个树状数组维护,一个维护个数,一个维护贡献,树状数组倍增可以做到\(O(nlogn)\)

当然,直接写个FHQTreap就直接拿下了。

然而,对顶堆好像也可以做,把堆换成set,其实是对顶平衡树。