【二分答案】游戏

这篇博客介绍了关于游戏中的礼包分配问题。当有不同数量的U盘、鼠标和机械键盘时,为了确保相邻顾客拿到不同类型的礼包,店长希望知道最多能发出多少份礼包。博客内容涉及输入输出说明及解决思路,主要通过二分查找的方法来确定最大礼包数。
摘要由CSDN通过智能技术生成

Description

“Ran,今天我要在Hakase家打游戏,不回来了。”
“Ran,Hakase新发明了游戏,我今天住博士家。”
“Ran,Conan今天要在我家通宵打游戏。”
终于有一天,电脑被打坏了……2333
所以Conan要前往专卖店买新的,正好专卖店正在促销,一共有三种礼包:
豪华礼包:一个 U盘、一个鼠标和一个机械键盘。
幸运礼包:一个 U盘、两个鼠标。
普通礼包:两个 U盘、一个鼠标。
卖店内准备了 a 个 U盘、b 个鼠标和 c 个机械键盘。为了给顾客带来足够多的惊喜,店长希望相邻两位领礼包的顾客拿到的礼包类型都是不同的。店长想知道这些奖品最多可以发出多少份礼包。可是店长毕竟没有Conan聪明,所以请教Conan,可是Conan要急着回去打游戏,所以就交给你啦。

Input

输入第一行包含一个正整数 T。
接下来T行每行包含3个正整数a, b, c,依次表示U盘、鼠标和机械键盘各有多少个。

Output

输出T行,每行一个整数,表示最多能发出多少份礼包。


思路

观察,可以发现礼包都共同至少拥有u盘1个和鼠标一个。
去除之后就变成了:

U盘 鼠标 键盘
0 0 1
0 1 0
1 0 0

然后r初始等于a和b的最小值,l=0;
mid为最终礼包数。
然后减去mid后,某样东西多出1个就代表它可以凑一个礼包。所以如果剩下的总和>mid,l=mid;
如果不够或者剩下的不能使任意俩种加起来大于等于第三种,r=mid-1;

#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值