码迷,mamicode.com
首页 > 编程语言 > 详细

C++算法代码——小C的数学广角

时间:2021-03-01 13:41:56      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:解决   name   包括   输出   数据   个人   bsp   代码   color   

题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1659

题目描述

 

当小C 4年级的时候,他的数学书上有一个数学广角记载着这样一道题:有n个人(n<=100)在水龙头前拿着水桶排队准备装水,每个人装水所需时间不同。为了使大家等待的时间总和尽量少,问应该怎样安排装水的顺序。当小C看到这道题时,觉得它再简单不过了,因为根据生活经验,总是让用时少的人先装水。于是他想用编程解决这道题。现给出n个人的装水时间(每个人的装水时间<=500),算出所有人需要等待的最小时间总和。

 

输入

 输入一共有两行。

第一行一个正整数n。
第二行是n个正整数,表示每个人的装水时间。
 

输出

 一个正整数,表示所有人需要等待的时间的总和。

样例输入

5
1 3 4 2 5

样例输出

20

提示

 

 本题由3chenzhehuan提供


一个人等待的时间不包括他自己装水的时间。


样例数据说明:


依次装水的人的序号是:①、④、②、③、⑤,他们装水时间分别为:1,2,3,4,5。


第一次,①号先装水,等待0min,总用时(等待+装水)1min;


第二次,④号装水,等待1min,总用时1+2=3min;


第三次,②号装水,等待3min,总用时3+3=6min;


第四次,③号装水,等待6min,总用时6+4=10min;


第五次,⑤号装水,等待10min,总用时10+5=15min;

作者分析:这道题是道基础的贪心,重点是在排序;
#include <bits/stdc++.h>
using namespace std;

int main(){
    int n,t = 0,ans = 0;
    cin >> n;
    int a[n+1];
    for (int i = 0;i < n;i++){
        cin >> a[i];
    }
    sort(a,a+n);
    for (int i = 0;i < n;i++){
        ans += t;
        t += a[i];
    }
    cout << ans;
    return 0;
}

 

C++算法代码——小C的数学广角

标签:解决   name   包括   输出   数据   个人   bsp   代码   color   

原文地址:https://www.cnblogs.com/linyiweiblog/p/14458670.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!