排队打水问题(water)

版权声明:本文为博主原创文章,未经博主允许不得转载。转载请表明出处 https://blog.csdn.net/hanyue0102/article/details/81275687

题目描述

有n个人排队到m个水龙头去打水,他们装满水桶的时间t1, t2 , ……, tn为整数且各不相同,应如何安排他们的打水顺序才能使他们花费的总时间最少?  只有一组输入数据哦。

输入

4 2 ( n m )

2 6 4 5 (t1 t2 …… tn)

 

输出

23(所有人的花费时间总和)

样例输入

4 2
2 6 4 5

样例输出

23

代码:

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1000;
int a[maxn];//接水的人 
int b[maxn];//等待接水的时间 
int main()
{
	int n,m,i,sum=0;
	cin>>n>>m;
	for(i=0;i<n;i++)
	cin>>a[i];
	sort(a,a+n);//接水的时间从小到大排序 
	for(i=0;i<n;i++)
	b[i]=a[i];
	for(i=m;i<n;i++)
	b[i]=b[i-m]+a[i];//每个人花费的时间=等待的时间+接水的时间 
	for(i=0;i<n;i++)
	sum+=b[i];//所有人的接水时间之和 
	cout<<sum<<endl;
	return 0;
}

 

阅读更多

扫码向博主提问

韩小妹

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • ACM
  • xyoj
  • c语言
  • 数据结构
去开通我的Chat快问
换一批

没有更多推荐了,返回首页