当小C 4年级的时候,他的数学书上有一个数学广角记载着这样一道题:有n个人(n<=100)在水龙头前拿着水桶排队准备装水,每个人装水所需时间不同。为了使大家等待的时间总和尽量少,问应该怎样安排装水的顺序。当小C看到这道题时,觉得它再简单不过了,因为根据生活经验,总是让用时少的人先装水。于是他想用编程解决这道题。现给出n个人的装水时间(每个人的装水时间<=500),算出所有人需要等待的最小时间总和。
标签:解决 name 包括 输出 数据 个人 bsp 代码 color
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1659、
当小C 4年级的时候,他的数学书上有一个数学广角记载着这样一道题:有n个人(n<=100)在水龙头前拿着水桶排队准备装水,每个人装水所需时间不同。为了使大家等待的时间总和尽量少,问应该怎样安排装水的顺序。当小C看到这道题时,觉得它再简单不过了,因为根据生活经验,总是让用时少的人先装水。于是他想用编程解决这道题。现给出n个人的装水时间(每个人的装水时间<=500),算出所有人需要等待的最小时间总和。
输入一共有两行。
一个正整数,表示所有人需要等待的时间的总和。
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; }
标签:解决 name 包括 输出 数据 个人 bsp 代码 color
原文地址:https://www.cnblogs.com/linyiweiblog/p/14458670.html