王磊网络网站建设,apache wordpress 伪静态,网络营销推广的手段,德州做网站公司电话游戏
题目大意#xff1a;
有三个套餐#xff0c;1#xff1a;一个a、一个b和一个c,2#xff1a;一个a和两个b#xff0c;3#xff1a;两个a和一个b#xff0c;现在有一定的a、b和c#xff0c;要使任意两个形同的套餐不相邻#xff0c;问最多可以有多少个套餐#…游戏
题目大意
有三个套餐1一个a、一个b和一个c,2一个a和两个b3两个a和一个b现在有一定的a、b和c要使任意两个形同的套餐不相邻问最多可以有多少个套餐写的不太好建议看原题
原题
题目描述
“Ran今天我要在Hakase家打游戏不回来了。” “RanHakase新发明了游戏我今天住博士家。” “RanConan今天要在我家通宵打游戏。” 终于有一天电脑被打坏了……2333 所以Conan要前往专卖店买新的正好专卖店正在促销一共有三种礼包 豪华礼包一个 U盘、一个鼠标和一个机械键盘。 幸运礼包一个 U盘、两个鼠标。 普通礼包两个 U盘、一个鼠标。 卖店内准备了 a 个 U盘、b 个鼠标和 c 个机械键盘。为了给顾客带来足够多的惊喜店长希望相邻两位领礼包的顾客拿到的礼包类型都是不同的。店长想知道这些奖品最多可以发出多少份礼包。可是店长毕竟没有Conan聪明所以请教Conan可是Conan要急着回去打游戏所以就交给你啦。
输入
输入第一行包含一个正整数 T。 接下来T行每行包含3个正整数a, b, c依次表示U盘、鼠标和机械键盘各有多少个。
输出
输出T行每行一个整数表示最多能发出多少份礼包。
输入样例
2
4 4 0
1 1 1输出样例
2
1说明
对于30%的数据满足T10a,b,c30。 对于60%的数据满足T100a,b,c30,000。 对于100%的数据满足T1000000a,b,c1,000,000。
解题思路
从题目中可以知道1abc2a2b32ab可以发现每一个都至少需要一个a和一个b减去这一个a和一个b后三个套餐就分别等于cba然后题意说相邻的套餐不可以相同所以得到一个值最大也只是另外两个相加在加一如下 1、2、1、3、11、2、1、3、11、2、1、3、1 所以得到abc1abc1abc1bac1bac1bac1cab1cab1cab1 这时我们二分枚举答案mid得到abcmid又因为abc所以得bcmid/2然后以此类推求出另外两个然后在判断就可以了
代码
#includecstdio
#includecstring
#includeiostream
using namespace std;
int t,l,r,a,b,c,aa,bb,cc,mid;
int main()
{scanf(%d,t);for (int i1;it;i){scanf(%d %d %d,a,b,c);l0;rmin(a,b);//最多可以选的while (lr){mid(lr1)/2;//中值aaa-mid;//减去bbb-mid;ccc;if (aabbccmid)//无法凑齐{rmid-1;continue;}if (aabbmid/2 bbccmid/2 aaccmid/2) lmid;//判断else rmid-1;}printf(%d\n,l);}
}