P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G

技术P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fe

p 1090【noip 2004改良组】联合果/【usaco 06 nov】栅栏修复G

题目描述

在一个果园里,多多把所有的水果都击倒了,并根据不同的水果种类把它们分成不同的堆。多多决定把所有的水果组合成一堆。

每次合并,多多可以将两堆水果合并在一起,消耗的体力等于两堆水果的重量之和。可以看出所有的水果都经过n-1n?一次合并后,只剩下一堆了。合并果实消耗的总体力等于每次合并消耗的体力之和。

因为要花大力气把这些水果搬回家,所以在合并水果的时候要尽量节约能源。假设每个水果的重量为11,水果的种类数和每种水果的数量都是已知的,那么你的任务就是设计一个组合序列方案,使更多的水果消耗的体力最小,并输出这个最小体力消耗值。

比如水果有33种,依次是11种、22种、99种。首先,11堆和22堆可以合并。新桩数33根,能耗33。然后将新桩与原第三桩合并,得到新桩,编号为1212,体力为1212。所以需要很大的体力=3 12=15=3 12=15。可以证明1515是最小物理消耗值。

输入格式

总共两排。

第一行是整数n(1n10000),表示水果的种类数。

第二行包含由空格分隔的n个整数,第I个整数ai?(1ai?20000)是第I个水果的数量。

输出格式

整数,即最小体力消耗值。输入数据以确保该值小于2 {31}。

输入输出样例

输入#1副本。

1 2 9

输出#1副本

15

说明/提示

对于30%的数据,确保n1000:

对于50%的数据,确保n5000;

对于所有数据,确保n10000。

分析

从观察可以看出,合并得越早,计算的次数越多,所以贪心策略是先合并小堆。

#includebits/stdc。h

使用命名空间标准;

int n;

priority_queueint,vectorint,greater int a;

int ans

int main()

{

cinn

for(int I=1;I=n;(一)

{

int p;

cinp

a . push(p);

}

而(a . size)(1)

{

int j=a . top();

a . pop();

int k=a . top();

a . pop();

ans=(j k);

a . push(j . k);

}

coutansendl

返回0;

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/100410.html

(0)

相关推荐

  • 12. 整数转罗马数字

    技术12. 整数转罗马数字 12. 整数转罗马数字罗马数字包含以下七种字符:I,V,X,L,C,D和M。
    字符 数值
    I 1
    V 5
    X

    礼包 2021年12月2日
  • K8S-ELK日志系统 之三:kafka集群

    技术K8S-ELK日志系统 之三:kafka集群 K8S-ELK日志系统 之三:kafka集群k8s部署kafkakafka: https://mirrors.tuna.tsinghua.edu.cn/

    礼包 2021年12月20日
  • 如何打补丁PSU

    技术如何打补丁PSU这篇文章主要讲解了“如何打补丁PSU”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何打补丁PSU”吧!首先说一下下载补丁和最新opatch的方法:都

    攻略 2021年11月15日
  • Sequoiadb数据库快照的字段含义是什么(数据库快照的作用是什么)

    技术Sequoiadb数据库快照的字段含义是什么这篇文章主要介绍“Sequoiadb数据库快照的字段含义是什么”,在日常操作中,相信很多人在Sequoiadb数据库快照的字段含义是什么问题上存在疑惑,小编查阅了各式资料,

    攻略 2021年12月22日
  • 古代著名书法家有哪些,历史上有哪些书法小故事

    技术古代著名书法家有哪些,历史上有哪些书法小故事好的,我乐意回答这个问题古代著名书法家有哪些!相传,东晋年间,有位修化于山阴的道士,特别喜欢王羲之的字,可惜无缘获得。后来,他从别人的口中了解到,王经常观察白鹅游戏,并从双

    生活 2021年10月28日
  • quartz.net动态创建任务(quartz.net怎样知道执行结果)

    技术Quartz在.NET中怎么使用本篇内容主要讲解“Quartz在.NET中怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Quartz在.NET中怎么使用”吧!一、

    攻略 2021年12月17日