#include<iostream>
using namespace std;
const int N=1010,M=510;
int f[N][M];
int V1,V2,n;
int main(){
scanf("%d%d%d",&V1,&V2,&n);
for(int i=0;i<n;i++){
int v1,v2;
scanf("%d%d",&v1,&v2);
for(int j=V1;j>=v1;j--){
for(int k=V2-1;k>=v2;k--){
f[j][k]=max(f[j][k],f[j-v1][k-v2]+1);
}
}
}
printf("%d ",f[V1][V2-1]);
int k=V2-1;
while(f[V1][k-1]==f[V1][V2-1]&&k>0){
k--;
}
printf("%d\n",V2-k);
return 0;
}
有两个限制条件。经典的只有体积一个限制条件。这里有两个限制条件。并且,这里的皮卡丘的血量要严格大于零。然后就没啥了。零一背包其实不需要把体积和价值存下来。可以一边输入一边计算。