1292:宠物小精灵之收服
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 const int N=105; 8 int a[N],b[N],f[1005][505]; 9 int main(){ 10 int n,m,t,maxx=0,pow=505; 11 cin>>n>>m>>t; 12 for(int i=1;i<=t;i++) 13 scanf("%d%d",&a[i],&b[i]); 14 for(int i=1;i<=t;i++) 15 for(int j=n;j>=0;j--) 16 for(int k=m;k>=0;k--){ 17 int t1=j+a[i],t2=k+b[i]; 18 if(t1<=n&&t2<=m){ 19 f[t1][t2]=max(f[t1][t2],f[j][k]+1);//f[i][j]表示消耗i精灵球j体力时最多能捕获的精灵数量 20 if(f[t1][t2]>maxx||(f[t1][t2]==maxx&&pow>t2)){ 21 maxx=f[t1][t2]; 22 pow=t2; 23 } 24 } 25 } 26 cout<<maxx<<" "<<m-pow; 27 return 0; 28 }