从刚开始m个人接水,ans = 0,其中一人接完了:minv = min(a[1], .. , a[m]),ans += minv,在换下一个人接水时,前面的m - 1个人已经接了a[i] - minv秒,接着加上后一个排队的人,每次while循环都相当于m个人同时接1秒的水,直至有人接水完成,此时minv等于第一次更新过后的m个人的接水时间中的最小值,ans += minv ...以此类推直到最后一个排队的人接完水,若此时还有没接完水的人,那直接在前m个人中选一个剩余时间最大的,让ans += maxv(a[1], ... ,a[m])。即ans就是最终n个人都接完水的总时间
点赞

相关推荐

点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务