首页 > 集合操作
头像 C2022lihan
发表于 2021-05-21 22:57:02
集合操作(C) 题解 先将 数组排序,可以考虑二分。二分什么呢?答曰:二分答案。 当然,不是集合中的每个元素都要二分答案,我们只二分原来还没有开始操作时最大的元素()最后的大小。 我们假设 最后的大小排名第 ,不妨假设原 的元素最后的排名分布在 ,且尽可能小。 容易证明,当 最后的大小越小, 展开全文
头像 sunny_forever
发表于 2021-05-22 12:26:12
c题题解 思路 思路:使用优先队列 --> 大根堆 ,因为它会动态更新, 所以我们每次把里面的最大值也就是队头给减去p就行了 但是 因为一次一次的减去p,总共需要减去k次,k很大 会超时。 所以我们对于每一个取出的最大值 让他减去cnt次p。 cnt:减去cnt次p 后,该最大值 被 第二大的 展开全文
头像 陌研
发表于 2021-05-24 11:28:55
集合操作 参考了大佬的代码:boringhaker 提交的代码 先將序列a排序。 如果 a[pos] 后边的数减去 k * p的平均值大于等于 a[pos - 1],就不需要管pos前边的数。用后缀和找到 pos 的位置。 pos后边的数减去 (a[i] - key)/p*p。如果 k 依旧不为0, 展开全文

等你来战

查看全部