题目 1527: [蓝桥杯][算法提高VIP]排队打水问题
时间限制: 1Sec 内存限制: 128MB 提交: 460 解决: 263
题目描述
有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2…………tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少?
数据规模和约定
其中80%的数据保证n< =10
输入
第一行n,r (n< =500,r< =75)
第二行为n个人打水所用的时间Ti (Ti< =100);
输出
最少的花费时间
样例输入
3 2
1 2 3
样例输出
7
代码实现
#include<stdio.h>
#define MAX 501
int answer();
int t[MAX];
int n,m,i,j,temp,s;
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
for (i=0;i<n;i++)
{
scanf("%d",&t[i]);
s+=t[i];
}
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
{
if(t[j]>t[j+1])
{
temp=t[j+1];
t[j+1]=t[j];
t[j]=temp;
}
}
answer();
}
return 0;
}
int answer()
{
int i,j,sum=0;
for (i=m;i<n;i++)
{
j=i;
while (j-m>=0)
{
sum+=t[j-m];
j-=m;
}
}
printf("%d",sum+s);
}