简单贪心。
由于你的目的是赚的钱多,而两种汉堡都是两个面包,所以哪个卖的贵就要先卖哪个,如果面包不多,那么久能卖多少就卖多少;如果卖完所有牛肉/鸡肉,面包还有剩余,那么才考虑卖便宜的那种。
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;
}
啦啦啦啦啦啦啦啦啦啦啦