UVa OJ 10954 - Add All
Problem
有n(n≤5000)个数的集合S,每次可以从S中删除两个数,然后把它们的和放回集合, 直到剩下一个数。每次操作的开销等于删除的两个数之和,求最小总开销。所有数均小于 105。
Input
Each test case will start with a positive number, N (2 ≤ N ≤ 5000) followed by N positive integers (all are less than 100000). Input is terminated by a case where the value of N is zero. This case should not be processed.
Output
For each case print the minimum total cost of addition in a single line.
Sample Input
1 | 3 |
Sample Output
1 | 9 |
Solution
题目很简单,就是最小的两个数相加,用优先队列只要几行代码就能完成。但是我为什么还要发一篇文章呢?因为通过这道题目,我知道了一个新的头文件 <functional> . 这里面包含了C++11的一些新特性,用于帮助构造“函数对象”(也称为函子)及其绑定程序。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Dash's Blog!
评论