NYOJ 55 懒省事的小明(哈弗曼树)
懒省事的小明
- 描写叙述
- 小明非常想吃果子,正好果园果子熟了。
在果园里,小明已经将全部的果子打了下来,并且按果子的不同种类分成了不同的堆。小明决定把全部的果子合成一堆。
由于小明比較懒。为了省力气,小明開始想点子了:
每一次合并,小明能够把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。能够看出,全部的果子经过n-1次合并之后。就仅仅剩下一堆了。
小明在合并果子时总共消耗的体力等于每次合并所耗体力之和。
由于还要花大力气把这些果子搬回家,所以小明在合并果子时要尽可能地节省体力。假定每一个果子重量都为1,而且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使小明耗费的体力最少,并输出这个最小的体力耗费值。比如有3种果子,数目依次为1,2。9。
能够先将1、2堆合并。新堆数目为3。耗费体力为3。
接着。将新堆与原先的第三堆合并。又得到新的堆,数目为12,耗费体力为12。所以小明总共耗费体力=3+12=15。
能够证明15为最小的体力耗费值。
- 输入
- 第一行输入整数N(0<N<=10)表示測试数据组数。接下来每组測试数据输入包括两行,第一行是一个整数n(1<=n<=12000),表示果子的种类数。
第二行包括n个整数,用空格分隔,第i个整数ai(1<=ai<=20000)是第i种果子的数目。
- 输出
- 每组測试数据输出包括一行,这一行仅仅包括一个整数,也就是最小的体力耗费值。
- 例子输入
-
1
3
1 2 9 - 例子输出
-
15
測试了非常多次。没有AC的原因果然是以下代码中凝视的部分
#include <iostream>
#include <algorithm> using namespace std; int main()
{
int n,m,i,j;
long long k,t;
cin>>n;
while(n--)
{
cin>>m;
long long *ans=new long long[m];
for(i=0;i<m;++i)
cin>>ans[i]; sort(ans,ans+m); k=0;
for(i=1;i<m;++i)
{
k=k+ans[i]+ans[i-1];
j=i+1;
ans[i]=ans[i]+ans[i-1];
while(ans[j-1]>ans[j] && j<m)
{
/* ans[j-1]=ans[j]^ans[j-1];
ans[j]=ans[j]^ans[j-1];
ans[j-1]=ans[j]^ans[j-1]; */
t=ans[j];
ans[j]=ans[j-1];
ans[j-1]=t; j++;
}
}
cout<<k<<endl;
}
return 0;
}
哎。好好学 计算机组成原理 吧!
NYOJ 55 懒省事的小明(哈弗曼树)的更多相关文章
- nyoj 55 懒省事的小明【优先队列】
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...
- nyoj 55 懒省事的小明 优先队列 multiset 还有暴力
懒省事的小明 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的 ...
- nyoj 55 懒省事的小明(priority_queue优先队列)
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...
- ACM 懒省事的小明
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...
- 懒省事的小明--nyoj55
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成 ...
- ny55 懒省事的小明
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而 ...
- 【ACM】懒省事的小明
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...
- ACM题目————STL练习之 懒省事的小明(优先队列)
描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.小明决定把所有的果子合成一堆. 因为小明比较懒,为了省力气,小明开始想点子了: 每一 ...
- NYOJ 55-懒省事的小明
点击打开链接 懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果 ...
随机推荐
- (转)淘淘商城系列——发布dubbo服务
http://blog.csdn.net/yerenyuan_pku/article/details/72758639 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入, ...
- leetcode_1011. Capacity To Ship Packages Within D Days_binary search二分
https://leetcode.com/problems/capacity-to-ship-packages-within-d-days/ 传送带每天有最大传送量V,对于n个货物[w1,w2,w3. ...
- OpenFlow_tutorial_4_Create_a_Learning_Switch
一.环境搭建: 教程里提供的VM image需要梯子才能下载,好不容易下载下来,发现镜像很难用,各种安装问题,搞了好几天也解决不了.后来就自己搭环境,主要是安装Ryu. 1.首先下载相应的python ...
- pycharm connect to mysql
1.download mysql installer community 5.7.20 https://dev.mysql.com/downloads/file/?id=473605 or 链接:ht ...
- oracle获取排序后的第一条信息
查询表table1里字段id小于10的所有数据,并且让数据根据id降序排列,然后得到第一条数据 select * from (select * from table1 where id<10 o ...
- [C#] 对List进行分组排序后输出
Student 类: public class Student { public int ID { get; set; } public string Name { get; set; } publi ...
- 初识Python(windows)——下载、安装、使用
Table of Contents 1. Why is Python 1.1. Python和R 2. python的下载与安装 2.1. python的版本选择 2.2. python的下载 2.3 ...
- NOIP专题复习3 图论-强连通分量
目录 一.知识概述 二.典型例题 1.[HAOI2006]受欢迎的牛 2.校园网络[[USACO]Network of Schools加强版] 三.算法分析 (一)Tarjan算法 (二)解决问题 四 ...
- mysql负载均衡
一.docker安装haproxy:docker pull haproxy 二.配置haproxy(参考url:https://zhangge.net/5125.html),vim /usr/loca ...
- C++ 赋值运算符重载
类的定义 class Test{ int id; public: Test(int i): id(i){ cout << "obj_" << i <& ...