NOJ 机器狗组装费用 (优先权队列)
来源:互联网 发布:时光八音盒 java版 编辑:程序博客网 时间:2024/05/17 05:03
机器狗组装费用
时间限制(普通/Java) : 1500 MS/ 4500 MS 运行内存限制 : 65536 KByte
总提交 : 490 测试通过 : 166
总提交 : 490 测试通过 : 166
题目描述
sed同学最近迷上了制造机器狗,购置了大量所需零件,零件可以组装为一个组件,这些组件或零件又可以组装为一个大的组件。在制造机器狗中,组件或零件只能两两进行组装,组装的顺序任意。在机器狗中,每个零件都有一个组装成本,每次组装一个组件的费用为各个零件组装成本之和。给定各个零件组装成本(单位为元),你的任务是帮助sed计算他至少花费多少费用。
输入
第一行包括一个整数N,表示机器狗零件数(1≤N≤10000)
第二行为N个正整数,表示每个机器狗零件组装成本(单位为元),整数之间用空格隔开。
输出
输出仅一行,即机器狗组装的最少费用。
注意:输出部分的结尾要求包含一个多余的空行。
样例输入
10
1 2 3 4 5 6 7 8 9 0
样例输出
136
题目来源
“IBM南邮杯”个人赛2009
题目链接:http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1076
题目分析:裸优先权队列,优先权为从小到大,每次取最小的两个出队相加累计并把和入队,直到队列中只有一个元素
#include <cstdio>#include <queue>using namespace std;int const MAX = 1e5 + 5;struct cmp{ bool operator()(int a, int b) { return a > b; }};priority_queue <int, vector<int>, cmp> q;int main(){ int n, get; scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d", &get); q.push(get); } int ans = 0; while(q.size() != 1) { int tmp1 = q.top(); q.pop(); int tmp2 = q.top(); q.pop(); int tmp = tmp1 + tmp2; ans += tmp; q.push(tmp); } printf("%d\n", ans);}
0 0
- NOJ 机器狗组装费用 (优先权队列)
- 机器狗组装费用 南邮NOJ 1076 优先权队列
- noj 1076 机器狗组装费用(优先队列)
- 南邮-1076-机器狗组装费用
- NOJ1076 机器狗组装费用 贪心
- 南邮 OJ 1076 机器狗组装费用
- NOJ1076机器狗组装费用——诡异的运行时间
- 优先权队列的实现
- python的优先权队列
- 堆和优先权队列
- 数据结构------堆和优先权队列
- huffman树_优先权队列
- 《C++实现数据结构》:优先权队列
- POJ 2431 Expedition (STL 优先权队列)
- NOJ-1401 乘车费用 题解要点
- 实现了两个普通的队列,一个优先权队列
- POJ 1862 变形虫合成 模拟题 优先权队列
- POJ 3253 Fence Repair (优先权队列+贪心)
- 普通素数 筛法求素数 二次筛法求素数 MillerRabin素数测试【模板】
- 惊群现象
- spring框架_01
- python字符串/元组/列表/字典互转
- iOS8 沙盒路径变化特性
- NOJ 机器狗组装费用 (优先权队列)
- Gradle: error code 42 Unable to open PNG file
- cv::absdiff函数的用法
- 将Centos的yum源为国内的阿里云源
- spring框架_02 依赖注入
- 黑马程序员 -- OC语言 Autorelease
- Android Intent调用大全、系统自带Intent调用大全
- 数字签名是什么?
- tomcat将项目放到其他位置配置方法