60分求助
查看原帖
60分求助
490978
小超手123楼主2022/5/3 09:01
#include<bits/stdc++.h>
using namespace std;
int n,m,T,ans;
int mo[110],tim[110];
int dp[210][210][110];
//dp[i][j][k]表示j元钱,k分钟时的前i个同学的价值 
int main(){ 
    cin>>n>>m>>T;
    for(int i=1;i<=n;i++)cin>>mo[i]>>tim[i];
    for(int i=1;i<=n;i++){
    	for(int j=0;j<=m;j++){
    		for(int k=0;k<=T;k++){
    			if(j>=mo[i]&&k>=tim[i]){
    				dp[i][j][k]=max(dp[i-1][j][k],dp[i-1][j-mo[i]][k-tim[i]]+1);
				}
				else{
					dp[i][j][k]=dp[i-1][j][k];
				}
			}
		}
	}
	for(int i=1;i<=n;i++)
    ans=max(ans,dp[i][m][T]);
    cout<<ans;
	return 0; 
}
2022/5/3 09:01
加载中...