#include<bits/stdc++.h> using namespace std; const int N=1e3+10; //三位01背包问题,把物品个数那一维去掉,就是二维了 int n,m1,m2; int v1[N],v2[N]; int f[N][N]; int main() { cin>>m1>>m2>>n; for(int i=1;i<=n;i++) cin>>v1[i]>>v2[i]; for(int i=1;i<=n;i++) for(int j=m1;j>=v1[i];j--) for(int k=m2;k>=v2[i];k--) f[j][k]=max(f[j][k],f[j-v1[i]][k-v2[i]]+1); int res=0; for(int k=0;k<=m2;k++) if(f[m1][m2]==f[m1][k]) { res=k; break; } printf("%d %d",f[m1][m2],m2-res); return 0; }
标签:int,宠物,收服,小精灵,v1,v2,m1,m2,-- From: https://www.cnblogs.com/tolter/p/17112128.html