一开始直接就想着乱搞,于是就直接枚举了1拼盘的数量,然后因为存在香蕉这个共同的决定性因素可以计算出最多可以购买多少个2拼盘,最后取它们的最大值。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int T;
cin >> T;
while (T--)
{
int a, b, c, d, e, f;
cin >> a >> b >> c>> d >> e >> f;
int x = a, y = min(b, c);
int res = 0;
for (int i = 0; i <= min(x, d); i++)
res = max(res, e * i + f * min(d - i, y));
cout << res << endl;
}
}
之后一想,既然存在香蕉这个共同的决定性因素,而且要求的数量都是1,直接判断哪个拼盘利润高,然后尽可能把香蕉用在那种拼盘不就好了吗。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int T;
cin >> T;
while (T--)
{
int a, b, c, d, e, f;
cin >> a >> b >> c>> d >> e >> f;
int x = a, y = min(b, c);
int res = 0;
if (e >= f)
{
int t = min(x, d);
d -= t;
res = t * e + f * min(d, y);
}
else
{
int t = min(y, d);
d -= t;
res = t * f + e * min(d, x);
}
cout << res << endl;
}
}