我第一次就是自己实现堆的,这样每次增加还是要有线性复杂度,只能AC70%,这题每次循环复杂度只能是O(logn)。 我采用的方式是使用STL的优先级队列。 比较巧妙的思路是:对于第i天,队列中的元素都加上i*k才是每个元素的真实值。每天 要把最大元素的数量减半的话,就先把top弹出,再将((top+i*k)/2)+i*k加入优先级队列。这样的话还是维持着这个每个元素加上i*k是真实值的性质。 最后一一弹出所有元素求和得到sum,sum+m*n*k就算最终答案。AC
点赞 4

相关推荐

10-15 03:05
门头沟学院 Java
CADILLAC_:凯文:我的邮箱是死了吗?
点赞 评论 收藏
分享
专心打鱼:互联网搬运工,贴子都要偷
点赞 评论 收藏
分享
牛客网
牛客企业服务