题意:
你有两个背包,大小分别为p和f
有两种物品,数量分别位cnts,cntw
他们的体积分别为s,w
求最大装下多少物品
思路:
枚举第一个背包装体积小的物品的数量即可
代码:
#include<bits/stdc++.h> #define ll long long #define maxn (int)1e3+5 using namespace std; 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(s,w); swap(cnts,cntw); } ll ans=0; for(ll i=0;i<=cnts;i++){ ll c1=0,c2=0,c3=0,c4=0; c1=min(i,p/s); c2=min((p-c1*s)/w,cntw); c3=min((cnts-c1),f/s); c4=min((f-c3*s)/w,(cntw-c2)); ans=max(ans,c1+c2+c3+c4); } cout<<ans<<endl; } }