登录—专业IT笔试面试备考平台_牛客网
题目:
牛牛有x件材料a和y件材料b,用2件材料a和3件材料b可以合成一件装备,用4件材料a和1件材料b也可以合成一件装备。牛牛想要最大化合成的装备的数量,于是牛牛找来了你帮忙。
分析:
设k为方案一合成装备数,那么mid-k为方案二合成装备数,可构建不等式。
代码实现:
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
ll x,y;
bool check(ll mid)
{
ll l=max(4*mid-x,0LL);//设方案一合成装备数为k,方案二合成装备数mid-k
ll r=min(y-mid,2*mid);
if(l<=r)
{
if(l<r)
return true;
else
{
if(l%2)//l,r都为偶数,如果为奇数,那么false
return false;
return true;
}
}
else return false;
}
void solve()
{
cin>>x>>y;
ll l=0,r=1e9/2+4;
ll md;
while(l<=r)
{
ll mid=l+(r-l)/2;
if(check(mid))
{
md=mid;
l=mid+1;
}
else r=mid-1;
}
cout<<md<<'\n';
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
ll t=1;
cin>>t;
while(t--)
solve();
return 0;
}