问题标题: 酷町堂:4186

0
0
已解决
李明阳
李明阳
初级光能
初级光能

4186   停水了经验值:0

题目描述 Description

小区停水了,有n个人排队到楼下的两个水龙头去接水。
每个人带的水桶的容量都不一样,把水桶装满的时间是T1 T2 T3 … Tn。
接满水的时间都是整数并且互不相等,应怎么安排他们的打水的顺序才能使他们花费的总时间最少?

输入描述 Input Description

输入两行:
第一行:一个数n,表示有n个人去接水
第二行:n个数,分别表示这n个人的接水时间

输出描述 Output Description

输出一个数:表示花费的最短的总时间

样例输入 Sample Input

6 5 4 6 2 1 7

样例输出 Sample Output

40

数据范围及提示 Data Size & Hint

1<=n<=300
(每个人花费的时间是等待的时间加上把水桶装满的时间,花费的总时间是这n个人花费的时间之和)


0
已采纳
杜智宸
杜智宸
中级光能
中级光能

定义,输入,排序

  • sort(a+1,a+1+n);
  • w1=a[1];
  • sum+=w1;
  • w2=a[2];
  • sum+=w2;
  • for(int i=3;i<=n;i++){
  • if(w1<w2){
  • w1+=a[i];
  • sum+=w1;
  • }
  • else{
  • w2+=a[i];
  • sum+=w2;
  • }
  • }

输出

0
张恩泽
张恩泽
高级天翼
高级天翼

输入之后这样写:

    sort (a + 1, a + 1 + n);
    t1 = a [ 1 ];
    sum += t1;
    t2 = a [ 2 ];
    sum += t2;

然后这样写:

    for (i从3循环到n) {
        如果t1小于t2 {
            t1等于t1加a[i]
            sum加t1
        }
        否则 {
            t2等于t2加a[i]
            sum加t2
        }
    }

 

我要回答