装备合成(牛客)

登录—专业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;
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值