解析:
对于刀和剑,我们肯定贪心选择单位最少的一个。
那么我们枚举刀选了多少把
假设刀选了i把
那么主人要选剑的时候就是num1=min(cntw,(p-i*s)/w) 要减去选刀的代价
跟随者也肯定选择单位最少的一个,所以跟随着一开始也选刀 那么就是num2=(cnts-i,f/s) 因为主人一开始选了i把需要减去
跟随着选剑的时候num3=min(cntw-num1,(f-num2*s)/w)
因为主人一开始选了剑所以要减去。又因为跟随者算了刀,携带的单位就要减去。
枚举的答案就是 i+num1+num2+num3,取最大值即可
#include <iostream>
using namespace std;
typedef long long ll;
int t;
ll p,f,cnts,cntw,s,w;
int main()
{
cin>>t;
while(t--)
{
cin>>p>>f>>cnts>>cntw>>s>>w;
if(s>w) swap(cnts,cntw),swap(s,w);
ll ans=0;
for(int i=0;i<=cnts;i++)
{
if(i*s>p) break;
ll num=min(cntw,(p-i*s)/w);
ll num1=min(cnts-i,f/s);
ll num2=min(cntw-num,(f-num1*s)/w);
ans=max(ans,num+num1+num2+i);
}
printf("%lld\n",ans);
}
return 0;
}