Bootstrap

dp 宠物小精灵之收服

#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;
}

有两个限制条件。经典的只有体积一个限制条件。这里有两个限制条件。并且,这里的皮卡丘的血量要严格大于零。然后就没啥了。零一背包其实不需要把体积和价值存下来。可以一边输入一边计算。

;