5 条题解

  • 2
    @ 2025-8-3 10:41:00
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    const int N=1e3+520;
    int w1[N],w2[N];
    int n,m,hp;
    int dp[N][N];
    signed main(){
    	cin>>m>>hp>>n;
    	for(int i=1;i<=n;i++){
    		cin>>w1[i]>>w2[i]; 
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=m;j>=w1[i];j--){
    			for(int k=hp;k>=w2[i];k--){
    				dp[j][k]=max(dp[j][k],dp[j-w1[i]][k-w2[i]]+1);
    			}
    		} 
    	}
    	cout<<dp[m][hp]<<" ";
    	for(int i=0;i<=hp;i++){
    		if(dp[m][hp]==dp[m][i]){
    			cout<<hp-i;
    			return 0;
    		}
    	}
    	return 0;
    }
    //说好不哭
    
    

    信息

    ID
    3021
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    183
    已通过
    70
    上传者