13. 郭老师爱合并果子
创始人
2024-05-29 14:58:18
0

1 题目描述

郭老师爱合并果子

成绩20开启时间2021年10月8日 星期五 18:00
折扣0.8折扣时间2021年10月26日 星期二 00:00
允许迟交关闭时间2021年12月1日 星期三 00:00

郭老师家有个果园,每年到了秋收的时候都会收获很多不同种类的果子。他决定把所有的果子合成一堆,但由于体力有限,郭老师在每次合并的时候只能将两堆果子合并到一起。假设有 ​ 堆果子,那么经过 ​ 次合并即可完成任务,且消耗的总体力等于每次合并所消耗的体力之和。

因为郭老师还需要保留体力将果子运回家,所以在合并果子过程中要尽可能地节省体力。假定每个果子重量均为​,并且已知果子的种类数和每种果子的数目,你的任务是设计出合理的合并方案,使郭老师耗费的体力最少。

例如有​种果子,数目依次为​。合并方案如下:

  1. ​ 合并,得到新堆数目为​,耗费体力为​。

  1. 将新堆与第三堆合并,又得到新堆,数目为​,耗费的体力为​。

  1. 总共消耗体力为 ​,可以证明​为最小的体力耗费值。

输入格式

输入包括两行,第一行是一个整数 ​,表示果子的种类数。第二行包含 ​ 个整数,用空格分隔,第 ​ 个整数 ​是第 ​ 种果子的数目。

输出

输出包括一行,这一行只包含一个整数,即最小的体力耗费值。


 测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1以文本方式显示
  1. 3↵
  2. 1 2 9↵
以文本方式显示
  1. 15↵
1秒1024KB0

2 代码

//小根堆是一种特殊形式的完全二叉树,可以使用数组来存储
//注意其中很巧妙的下标2倍关系
//从1开始存,0号元素不使用,可以很好的利用上下标的2倍关系
#include
#includelong int* heap;
long int heapSize = 0;  //堆元素个数
long int sum = 0;void swap(long int* a, long int* b) {long int temp;temp = *a;*a = *b;*b = temp;
}//存入新数,从末尾存,然后排序
void put(long int num) {long now, next;heap[++heapSize] = num;  //初始值是0,使用前自增now = heapSize;while (now > 1) {next = now >> 1;  //位运算,相当于/2,速度更快if (heap[now] >= heap[next])   //符合结构,直接退出,其他地方都是有序的break;swap(&heap[now], &heap[next]);  //没有直接退出,说明需要交换now = next;}
}//弹出表头,只能从头操作,然后把最后一个数放到根的位置上,排序处理
long int pop() {long int now = 1, next, res = heap[1];heap[1] = heap[heapSize];heapSize--;while (now * 2 <= heapSize) {  //保证有左分支next = now * 2;if (next < heapSize && heap[next + 1] < heap[next])  //有右分支,而且右分支比左分支小next++;if (heap[now] <= heap[next])break;  //符合结构,直接退出swap(&heap[now], &heap[next]);  //没有直接退出,说明不符合结构,需要交换now = next;   //传递继续操作}return res; //弹出的数
}int main(int argc, char* argv[]) {//freopen("file in.txt","r",stdin);long int n;long int i;long int temp;scanf("%ld", &n);//根据输入的n的大小来申请空间heap = (long int*)malloc(sizeof(long int) * (n + 1));for (i = 1;i <= n;i++) {scanf("%ld", &heap[i]);put(heap[i]);}//只有一堆果子的情况if (n == 1) {printf("0\n");return 0;}while (n > 1) {temp = pop() + pop();  //这两个pop()可不一样哦sum += temp;put(temp);   //存进去,会自动处理成小根堆n--;}printf("%ld\n", sum);return 0;
}

相关内容

热门资讯

今天,宜爬“山”! 转自:珠海发布大家都说,父爱如山,母爱又何尝不是!它以山的姿态站在我们的人生坐标里,它用山的沉默垒出...
汽车车门把手将迎来国家标准,释... 转自:新华网  新华社北京5月10日电 题:汽车车门把手将迎来国家标准,释放什么信号?  新华社记者...
10日付费短剧热度大盘5650... 来源:新腕儿今天发布的是昨天(5月10日)短剧付费大盘日榜,整体大盘热度值为5650万。特别声明:以...
漂泊 53 年,苏联金星探测器... IT之家 5 月 11 日消息,俄罗斯国家航天集团宣布,近地空间危险情况自动预警系统监测显示,宇宙-...
加州州长再就关税批评特朗普政府 转自:海客新闻 【#加州州长再就关税批评特朗普政府#】#...
都有数|玩儿着就能挣钱?国家认... 转自:北京日报客户端人社部日前公示拟新增无人机群飞行规划员、装修管家等17个新职业,以及黄金鉴定估价...
我爱你,不止今天! 咿呀学语时当我第一次模糊地喊出“妈妈”你尚且青涩的眼眸中亮起柔软的光长大离家后一声“妈妈”成了电话里...
焦点访谈 | 突围拓展多元市场... 来源:央视网 央视网消息(焦点访谈):当前我国的外贸行业正面临前所未有的挑战。美国肆意挥舞关税大棒,...
雨水按下暂停键 阳光重返天气舞...     昨日19时许,南宁城区迎来降雨,体感稍凉。    本报记者宋延康 摄  本报讯(记者赵金玲)...
科普大篷车进乡村 科技体验零距...     科技辅导员为学生讲授科技知识。    本报通讯员肖重虎 摄  本报讯(记者凌剑伊 通讯员蒙蓓...
镇江人才吸引力升至全国37位 金山网讯 5月9日,智联招聘旗下专业研究机构智联研究院联合“泽平宏观”正式发布《中国城市人才吸引力排...
【加快落实“五大任务” 推动高... 来源:内蒙古新闻网-《内蒙古日报  5月7日,在位于乌兰察布市四子王旗忽鸡图乡小东营村灌木林退化修复...
时政微纪录丨习主席的俄罗斯时间 来源:央视新闻客户端 应俄罗斯联邦总统普京邀请,国家主席...
常见故障100%识别 我国货运... 记者今天(11日)从国家能源集团获悉,我国货运铁路首套智能巡检机器人在河北沧州投用,这对促进我国铁路...
中共太原市委组织部公示 现对市委研究拟任职干部予以公示。郭强,男,汉族,1981年10月生,在职大学,中共党员,现任太原物产...
苏丹一州首府遭无人机袭击,20... 苏丹政府当地时间10日说,苏丹北科尔多凡州首府欧拜伊德市当天遭无人机袭击,造成20名囚犯死亡。苏丹文...
陈钧书画金石题跋艺术作品展在铜...   本报讯 (记者 吴洋凯)5月7日,由铜川书画院主办,铜川书画公园文化艺术有限公司承办的“砚耕四十...
花季少女被限制高消费,原因竟然... 转自:上观新闻2024年的夏天,大一学生小赵攥着身份证站在高铁站售票厅,屏幕上“无法购买高铁票”的提...
新职业新工种,开启无限可能! 转自:新华网 早上叫醒你的不是闹钟,可能是睡眠健康管理师...
政策一经出台,便在金融市场激起... 2025 年 5 月 7 日,中国人民银行今日向市场释放重磅政策组合拳。潘功胜行长在国务院新闻办发布...