课程设计 带权路径长度 优先队列 随意取模的后果 .
来源:互联网 发布:好看的美国电影 知乎 编辑:程序博客网 时间:2024/05/16 14:44
题目描述
给定n个权值作为n个叶子结点,构造哈夫曼树, 求其带权路径长度。
输入
输入由多组数据组成。
每组数据分成两行。第一行仅一个整数n(2<=n<=100000)。第二行有n个空格分开的权值,值范围在[1,1000000000]之间。
输出
对于每组测试数据,输出一行,即其对应哈夫曼树的带权路径长度对1000000007取模。
样例输入
4
7 5 2 4
8
5 29 7 8 14 23 3 11
样例输出
35
271
提示
给定n个权值作为n个叶子结点,构造哈夫曼树, 求其带权路径长度。
输入
输入由多组数据组成。
每组数据分成两行。第一行仅一个整数n(2<=n<=100000)。第二行有n个空格分开的权值,值范围在[1,1000000000]之间。
输出
对于每组测试数据,输出一行,即其对应哈夫曼树的带权路径长度对1000000007取模。
样例输入
4
7 5 2 4
8
5 29 7 8 14 23 3 11
样例输出
35
271
提示
注意运算溢出
思路:看到题目首先想到了模拟哈夫曼树的构造,然后遍历计算,但数据100000,很大,构造的话很容易超时,后来网上搜索到了哈夫曼树的公式http://blog.csdn.net/u013011841/article/details/38226099然后用sort试了下发现,超时,后来想到了用优先队列priority_queue和multiset可以在输入的时候默认的从小到大排列,but此时自己数学学的不是很好,对每一步进行了去模运算,错了5次,最后确认是只在最后的结果取模就可以了。#include <queue>#include <cstdio>#include <iostream>#include<algorithm>using namespace std;#define MOD 1000000007typedef long long ll;int main(){ ll n; while(scanf("%lld",&n)==1) { ll m,re=0; priority_queue<ll , vector<ll >, greater<ll> >p; if(!p.empty()) p.pop(); for(ll i=1;i<=n;i++){ cin>>m; p.push(m); } /*for(int i=1;i<=n;i++) { int a=p.top(); cout<<a; p.pop(); }*/ for(ll i=2;i<=n;i++){ ll a=p.top(); p.pop(); ll b=p.top(); p.pop(); re=a+b+re; p.push(a+b); // cout<<a<<b<<endl; } cout<<re%MOD<<endl; } return 0;}
阅读全文
0 0
- 课程设计 带权路径长度 优先队列 随意取模的后果 .
- 优先队列解哈夫曼编码问题之带权路径长度
- 求哈夫曼的带权路径长度
- 哈夫曼树的带权路径长度
- 求其带权路径长度
- 【数据结构】求节点的哈夫曼的带权路径长度
- 哈夫曼树 带权路径长度WPL
- 带权路径长度 hnust数据结构
- 带权路径长度 层次遍历
- 数据库表的结构随意修改的可能后果
- 数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列)
- 用 C# 实现带键值的优先队列
- HDU1026 优先队列与路径
- 哈夫曼树的基本操作,(树的建立,带权路径长度,哈夫曼编码)
- 优先队列来处理的 最短路径
- HDU 2544 用优先队列写的最短路径
- 优先队列优化的dijsktra完整代码+路径记录
- (哈夫曼树10.3.1)POJ 3253 Fence Repair(计算带权路径长度最小的哈夫曼树)
- Hibernate 在 Intelij中的使用
- g++: internal compiler error: Killed (program cc1plus)
- 天平称球问题-转
- 进程与线程的区别?-转
- 【IT笔试面试题整理】不用加减乘除做加法
- 课程设计 带权路径长度 优先队列 随意取模的后果 .
- 【IT笔试面试题整理】丑数
- 【IT笔试面试题整理】连续子数组的最大和
- JavaScript模块化 --- Commonjs、AMD、CMD、ES6 modules
- 【IT笔试面试题整理】数组中出现次数超过一半的数字
- 【IT笔试面试题整理】二叉树中和为某一值的路径--从根到叶子节点
- Centos7防火墙
- 【CB Insights全球最强AI创新公司Top100榜单】旷视、商汤、寒武纪等7家中国公司入选
- 【IT笔试面试题整理】二叉树中和为某一值的路径--所有可能路径