简单贪心。

由于你的目的是赚的钱多,而两种汉堡都是两个面包,所以哪个卖的贵就要先卖哪个,如果面包不多,那么久能卖多少就卖多少;如果卖完所有牛肉/鸡肉,面包还有剩余,那么才考虑卖便宜的那种。

Code:

#include <bits/stdc++.h>
using namespace std;
#define rep(i,x,y) for (ll i=x;i<=y;i++)
#define per(i,x,y) for (ll i=x;i>=y;i--)
typedef long long ll;

int main()
{
    int q;
    cin>>q;
    while (q--)
    {
        int a,b,c,x1,x2;//a是面包个数,b是牛肉个数,c是鸡肉个数
        cin>>a>>b>>c>>x1>>x2;
        ll ans=0;
        if (x1>=x2)//牛肉不比鸡肉便宜,卖牛肉汉堡
        {
            if (b*2>=a)//面包不够做所有牛肉汉堡或正好
            {
                cout<<a/2*x1<<endl;
                continue;
            }
            else//面包还有剩余
            {
                ans+=b*x1;
                a-=b*2;//开始做鸡肉汉堡
                if (c*2>=a)//面包不够做鸡肉汉堡或正好
                {
                    ans+=a/2*x2;
                    cout<<ans<<endl;
                    continue;
                }
                else
                {
                    ans+=c*x2;//面包够做完所有鸡肉
                    cout<<ans<<endl;
                    continue;
                }
            }
        }
        else//鸡肉比牛肉贵,同上
        {
            if (c*2>=a)
            {
                cout<<a/2*x2<<endl;
                continue;
            }
            else
            {
                ans+=c*x2;
                a-=c*2;
                if (b*2>=a)
                {
                    ans+=a/2*x1;
                    cout<<ans<<endl;
                    continue;
                }
                else
                {
                    ans+=b*x1;
                    cout<<ans<<endl;
                    continue;
                }
            }
        }
    }
    return 0;
}