贪心思想每次合并重量最小的两堆果子,这样消耗的体力最少,然后把合并后的果子放回序列继续找重量最小的两堆果子。 每次合并果子后重新排序的话,时间复杂度会很高,所以可以使用优先队列完美解决。
while(q.size() >= 2) { int a = q.top(); q.pop(); int b = q.top(); q.pop(); ans += a + b; q.push(a + b); }
注册一个 核OJ_核桃编程 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 核OJ_核桃编程 通用账户