思路:一开始觉得像个dp,但一看范围太大了。然后发现每种刀剑的质量固定的特点,那么很容易想到贪心肯定先把质量小的搞完,而数量范围最多2e5。所以暴力遍历主人拿质量小的货物(刀或间)从0–最大可拿的数量个,然后剩下的容量去拿另一种。到了仆人尽可能先拿质量小的货物,剩余容量去拿质量大的。注意边界即可。
Code:
#include<iostream>
#include<cmath>
#define pii pair<int,int>
using namespace std;
int main()
{
int t;cin >> t;
while (t--)
{
int z, p;cin >> z >> p;
pii a, b, r;
cin >> a.first >> b.first;
cin >> a.second >> b.second;
if (b.second < a.second)
{
r = b;b = a;a = r;
}
int sum = 0;
for (int i = 0;i <= a.first;i++)
{
if (i * a.second > z)break;
int s = i;
s += min(b.first, (z - a.second * i) / b.second);
int nb=b.first- min(b.first, (z - a.second * i) / b.second);
s += min(a.first - i, p / a.second);
s += min(nb, (p - min(a.first - i, p / a.second) * a.second) / b.second);
sum = max(sum, s);
}
cout << sum << endl;
}
}