CODEFORCES1084B - Kvass and the Fair Nut解题思路分析

1.题目链接

链接:Link

2.题目大意:

有n个瓶子,每个瓶子初始化装有vi升的水,现在我有另一个能装s升的水x。我的目标是用给定的n瓶水来装满x,并且使得n个瓶子中最少的水最大,输出最少水的升数。若不能倒满x,则输出-1.

3.解题思路:

这个题目可以用贪心来做,分以下几种情况:

  • 若所有n瓶水加起来都不能装满x,则输出-1;
  • 能装满x,从最多水的瓶子开始到,倒到与最少水的瓶子有一样多的水的时候就换下一个最大水的瓶子来倒,但是最后没有用到最少水的那个瓶子。这时应该输出最少水的数值;
  • 承接上一种情况,但是用到了最少水的瓶子,这时分两种情况:
  • (1)当倒到最少水的瓶子时,n个水瓶里的水是一样多的。如果x中剩余需要倒的水正好是n的倍数,则输出
min(x) - res(x) / n;
  • (2)若不是n的倍数,则输出:
min(x) - res(x) / n - 1;

Done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值