B. Buying Lemonade

一、题目

1.具体题目

有一台售卖柠檬水的自动售货机。这台机器一共有 n 个插槽。你知道最初的 i /-个插槽装有 ai 罐柠檬水。机器上还有 n 个按钮,每个按钮对应一个插槽,每个插槽对应一个按钮。不幸的是,按钮上的标签已经磨损,所以你不知道哪个按钮对应哪个插槽。

当你按下 i (-)槽对应的按钮时,会发生以下两种情况之一:

  • 如果 i -th插槽中有一罐柠檬水,它就会掉出来,你就可以拿走它。此时, i -th槽中的罐子数量会减少 1 。
  • 如果 i (-th)槽中没有柠檬水罐头了,就不会有任何东西掉出来。

按下按钮后,罐子会迅速掉出,以至于无法追踪它是从哪个插槽中掉落的。插槽中的内容是隐藏的,你无法看到每个插槽中还剩多少罐。您唯一知道的是插槽中罐子的初始数量: a1,a2,…,an .

请计算最少需要按多少次按钮才能保证你至少收到 k 罐柠檬水。

请注意,在按键过程中,您可以根据是否收到一罐柠檬水来调整您的策略。保证机器中总共至少有 kk 罐柠檬水。换句话说,就是 k≤a1+a2+…+an 。

2.输入:

每个测试由多个测试用例组成。第一行包含一个整数 t ( 1≤t≤10000 ) - 测试用例数。测试用例说明如下。

每个测试用例的第一行包含两个整数 n 和 k ( 1≤n≤2⋅105 , 1≤k≤109 )--机器的插槽数和所需的柠檬水罐数。

每个测试用例的第二行包含 n 个整数 a1,a2,…,an ( 1≤ai≤109 ) - 插槽中的罐头数量。

可以保证 k≤a1+a2+…+an ,即机器中至少有 k 罐柠檬水。

保证所有测试用例中 n 的总和不超过 2⋅105 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值