宠物小精灵之收服
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 }