资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
问题描述
有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2………..tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少?
输入格式
第一行n,r (n<=500,r<=75)
第二行为n个人打水所用的时间Ti (Ti<=100);
输出格式
最少的花费时间
样例输入
3 2
1 2 3
样例输出
7
数据规模和约定
其中80%的数据保证n<=10
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int r=scanner.nextInt();
int[] s=new int[n];
for(int i=0;i<s.length;i++)
s[i]=scanner.nextInt();
Arrays.sort(s);
int sum=0;//用于存放总共花费的时间。
for(int i=0;i<r&&i<s.length;i++)
sum+=s[i];
for(int i=r;i<s.length;i++) {
s[i]+=s[i-r];
sum+=s[i];
}
System.out.println(sum);
}
}
贪心问题。