n n 个人一起排队接水,第个人需要 b[i] b [ i ] 的时间来接水。
1<=n<=1000 1 <= n <= 1000
0<=b[i]<=1000 0 <= b [ i ] <= 1000
同时只能有一个人接水,正在接水的人和没有接水的人都需要等待。
完成接水的人会立刻消失,不会继续等待。
你可以决定所有人接水的顺序,并希望最小化所有人等待时间的总和。
超级简单的一道贪心题,由于一个正在接水的人会影响到所有还没有接水的人,所以我们只需要贪心一下让需要时间少的人优先接水就好了。排一下序然后求一个前缀和即可。
关键代码:
for(I=1;I<=N;I++){
Time[I]=Read();
}
sort(Time+1,Time+1+N);
for(I=1;I<=N;I++){
Sum[I]=Sum[I-1]+Time[I];
}
for(I=1;I<=N;I++){
Ans+=Sum[I];
}