51Nod 排队接水【贪心】

n 个人一起排队接水,第 i 个人需要 b [ i ] 的时间来接水。
1 <= n <= 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];
}

猜你喜欢

转载自blog.csdn.net/yanzhenhuai/article/details/81108300
今日推荐