门户类型网站有哪些网站运营管理
登录—专业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-kll r=min(y-mid,2*mid);if(l<=r){if(l<r)return true;else {if(l%2)//l,r都为偶数,如果为奇数,那么falsereturn 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;}