【weJudge】1107. [ACM][2014新生赛重现][现场]啊~啊~,麻婆豆~腐,麻婆豆~腐~

麻婆豆腐是小奏最爱的食物,为了做出最上等的麻婆豆腐,小奏准备了若干上等的食材,并且获得了传说中的麻婆豆腐的料理方法:每次将两种食材合二为一,成为一种新的食材,直到所有的食材都合并到一起,传说中的麻婆豆腐就做成了!
然而,每种食材都有不同的料理难度,每次料理两种食材所需的时间是两种食材料理难度相加;而合二为一的新食材料理难度也是两种食材的料理难度相加。

输入要求

数据有多组输入,第一行输入一个整数n1<=n<=100),表示食材的数量;接下来一行为n个整数ai1<=ai<=100),表示每种食材的料理难度。以EOF结束。

输出要求

对于每组数据,每行输出一个整数,为最短花费时间。

测试数据

输入示例

3
1 3 2
5
1 1 1 1 1
1
15

输出示例

9
12
0

小贴士

声明:本套题目由ACM协会内一腐宅命题,其中可能出现奇怪的模型与题目设定,相关设定不代表协会观点与立场。

题目来源

2014BNUZ-ACM新生赛现场赛原题命题:北京师范大学珠海分校ACM协会陈思佳

 


  1. #include<bits/stdc++.h>  
  2. using namespace std;  
  3. int main() {  
  4.     int n;  
  5.     while(cin >> n) {  
  6.         int i, a[1000];  
  7.         for(i = 0; i < n; i++) {  
  8.             cin >> a[i];//输入数据  
  9.         }  
  10.         //稍微观察一下可知,由小到大来相加花费时间是最短的(贪心?)  
  11.         int sum = 0,  k = 0;//sum来存答案,k来控制数组  
  12.         for(i = 0; i < n - 1; i++) {//两两相加循环n-1次  
  13.             sort(a, a + n - k);//每次都排序,但是排序的数组越来越小,因为食材都在合并。  
  14.             int tmp = a[0] + a[1];//最小的两个相加  
  15.             a[0] = tmp;//欢迎新数据!!  
  16.             a[1] = a[n - 1 - k];//压缩数组  
  17.             sum += tmp;//存答案  
  18.             k++;//自增  
  19.         }  
  20.         cout << sum << endl;  
  21.     }  
  22. }  

抛砖引玉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值