这是一道贪心题,我们来简单分析一下贪心策略:
+ 由一个领带和一件夹克衫组成,其收益为$\text{ e }$元。
+ 由一条围巾,一件背心和一件夹克衫组成,其收益为$\text{ f }$元。
我们可以发现,两种套装的公共部分是夹克衫,而且需要的夹克衫的数量都一样,所以夹克衫不能浪费,只能用在更贵的套装上面。
所以就出思路了,我们尽量多做更贵的套装,如果实在做不了就做另一种套装。
代码如下:
```cpp
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d, e, f;
cin >> a >> b >> c >> d >> e >> f;
int sum = 0;
for(int i = 1; i <= d; i = i + 1) //这是一个不太容易理解的循环,有几件夹克衫就可以做几个套装,所以循环次数就是夹克衫的件数
{
if(e > f) //如果夹克衫+领带的价钱大于夹克衫+围巾+背心的价钱,那么:
{
if(a > 0) //如果还有剩余领带
{
a = a - 1; //剩余领带-1
sum = sum + e; //总额增加套装1的价钱
}
else if(b > 0 && c > 0) //如果没有剩余领带,但是还有围巾和背心
{
b = b - 1; //剩余围巾-1
c = c - 1; //剩余背心-1
sum = sum + f; //总额增加套装2的价钱
}
else //如果只有夹克衫,其他的啥都没有
{
break; //那么终止循环,无需浪费时间
}
}
else //反之:
{
if(b > 0 && c > 0) //如果还有剩余的围巾和背心
{
b = b - 1; //剩余围巾-1
c = c - 1; //剩余背心-1
sum = sum + f; //总额增加套装2的价钱
}
else if(a > 0) //如果没有剩余的围巾和背心,但是还有剩余的领带
{
a = a - 1; //剩余领带-1
sum = sum + e; //总额增加套装1的价钱
}
else //如果只有夹克衫,其他的啥都没有
{
break; //那么终止循环,无需浪费时间
}
}
}
cout << sum << endl; //输出
return 0; //完结撒花
}
```