九度OJ
来源:互联网 发布:减肥不减胸 知乎 编辑:程序博客网 时间:2024/06/14 09:26
题目描述:
哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。
输入:
输入有多组数据。
每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。
输出:
输出权值。
样例输入:
5
1 2 2 5 9
样例输出:
37
来源:
2010年北京邮电大学计算机研究生机试真题
思路:该树非叶节点的权值和=该哈夫曼树的带权路径长度和。本题就是求所有非叶节点的和。用数组保存输入的数组,(然后:排序后把最小的两个数的和放入数组,然后把那两个小数去掉。)对新数组重新排序,重复以上步骤。
ac代码:
#include<bits/stdc++.h>using namespace std;int a[2005];int main(){ int fir,end,n,sum; while(~scanf("%d",&n)){ sum = 0; for(int i = 0;i < n;i++){ cin >> a[i]; } sort(a,a+n); fir = 0; end = n-1; while(fir != end){ end++; a[end] = a[fir]+a[fir+1]; sum += a[end]; fir += 2; sort(a+fir,a+end+1);//注意这里别写成a+end } cout << sum << endl; } return 0;}
阅读全文
0 0
- 【九度OJ】:九度OJ 1050
- 【九度OJ】:九度OJ 1053
- 【九度OJ】:九度OJ 1056
- 【九度OJ】:九度OJ 1059
- 【九度OJ】:九度OJ 1206
- 九度OJ:1000
- 【九度OJ】 1006
- 九度 OJ 1499
- 九度OJ-1002
- 九度OJ-1003
- 九度OJ 1004
- 九度OJ 1003
- 九度oj 采药
- 九度OJ 1001
- 九度OJ 1015
- 九度oj 1972
- 九度OJ 1161
- 九度OJ 1016
- esp8266模式问题
- hibernate增删改查案例教程---【小白系列】0基础到熟练应用hibernate框架(三)
- 2017.6.27
- 在数组里增加一个元素
- CF-Codeforces Round #420 (Div. 2)-C-Okabe and Boxes
- 九度OJ
- 2017暑假实习
- 性能分析工具vtune使用
- Symmetric Difference
- Android之ToolBar使用
- leetcode 236 Lowest Common Ancestor of a Binary Tree
- 区间DP
- java基础知识简化
- 房卡麻将开发之”代开房间”