原本30PTS,加了记忆化RE
查看原帖
原本30PTS,加了记忆化RE
1061543
YFXxlZem楼主2024/8/29 16:16
#include<bits/stdc++.h>
using namespace std;
int f[1005][5],t,m,num,dp[105][105][105];
int dfs(int pos,int sum,int time){
	if(dp[pos][sum][time]){
		return dp[pos][sum][time];
	}
	if(time<0){
		return 1;
	}
	if(pos>m){
		num=max(sum,num);
		return 1;
	}
	dp[pos+1][sum][time]=dfs(pos+1,sum,time);
	dp[pos+1][sum+f[pos][2]][time-f[pos][1]]=dfs(pos+1,sum+f[pos][2],time-f[pos][1]);
}
int main(){
	cin>>t>>m;
	for(int i=1;i<=m;i++){
		cin>>f[i][1]>>f[i][2];
	}
	dfs(1,0,t);
	cout<<num;
	return 0;
}
2024/8/29 16:16
加载中...